Test test1 = new Test();
此处, new Test()表示创建类Test的新实例并进行分配 参考test1。
Class<Test> test2 = Test.class;
Test test2Instance = test2.newInstance();
我无法定义(用语言)第一个陈述。另一方面,第二个声明对我来说非常清楚。
修改
String是类 Class 的实例。
字符串文字(例如“我是一个字符串。”)是该类的一个实例 的字符串
class literal(例如 Hashtable.class )是该类的一个实例 的类
答案 0 :(得分:2)
Class<Test> test2 = Test.class;
此语句声明一个名为test2
的变量,类型为Class<Test>
。它使用此类型的唯一实例初始化此变量,使用引用类Test.class
的类文字表达式Test
。
答案 1 :(得分:1)
Class<Test> test2 = Test.class;
表示“为我提供代表Class
类的Test
对象,并将其存储在变量test2
中。
除了Class
是通用的,这与泛型无关。它是关于类对象的。
答案 2 :(得分:0)
Class<Test>
是特定类型的泛型类型。从字面上看,您定义的变量test2
类型为Class<T>
T == Test
。
Class<T>
是参数类型,它取决于T,如果添加约束T == Test
,那么您正在谈论Class<Test>
的变量(这是一种特定的不同类型)。
与亚型的多态性相比是正交的。如果你有
class Base { .. }
class Derived extends Base { .. }
你写了
Derived derived = ...
您声明声明名为derived
的{{1}}类型的变量没有问题。这是一回事,但Derived
不是Class<Test>
的子类型,而是它的特殊化。