<?>可以接受的是未知的类型
<T>接受的是制定的类型,看了下面一段代码就会明白的
利用反射中的Constructor类获取一个String对象- public static void main(String[] args)throws Exception{
- //方法1
- Constructor<?> constructor1 =Class.forName("java.lang.String").getConstructor(String.class);
- String str1 =(String) constructor1.newInstance("abc");
- //方法2
- Constructor<String> constructor2 = String.class.getConstructor(String.class);
-
- String str2 =constructor2.newInstance("abc");
-
- System.out.println(str1);
- System.out.println(str2);
- }
- }
复制代码 方法1中就是用的通配符<?>
方法2中Constructor类中是具体String类
若是方法1中是Constructor<String> constructor1 =Class.forName("java.lang.String").getConstructor(String.class);
则代码应该改成Constructor<String> constructor1 =(Constructor<String>)Class.forName("java.lang.String").getConstructor(String.class);
|