Java Class 通用表达式语法
Java Class Generic Expression Syntax
Test test1 = new Test();
here, new Test() means create new instance of class Test and assign it
to reference test1.
Class<Test> test2 = Test.class;
Test test2Instance = test2.newInstance();
我无法(用文字)定义第一个陈述。另一方面,第二个陈述对我来说很清楚。
编辑
String is an instance of the class Class.
A string literal (e.g. "I am a string.") is an instance of the class
String.
class literal (e.g. Hashtable.class) is an instance of the class
Class.
Class<Test> test2 = Test.class;
意思是“给我代表 Test
class 的 Class
对象并将其存储在变量 test2
.
中
除了 Class
是泛型之外,这与泛型无关。这是关于 class 个对象。
Class<Test> test2 = Test.class;
此语句声明了一个名为 test2
的变量,类型为 Class<Test>
。它使用此类型的唯一实例初始化此变量,使用 class 文字表达式 Test.class
引用 class Test
.
Class<Test>
是泛型的特定类型。从字面上看,您正在定义一个 test2
类型的变量 Class<T>
和 T == Test
.
Class<T>
是一个参数类型,它依赖于 T,如果你添加约束 T == Test
那么你在谈论一个 Class<Test>
的变量(这是一个特定的不同类型).
与子类型的多态性相比,它是正交的。如果你有
class Base { .. }
class Derived extends Base { .. }
然后你写
Derived derived = ...
您可以毫无疑问地声明您正在声明一个名为 derived
且类型为 Derived
的变量。这是同一件事,但 Class<Test>
不是 Class<T>
的子类型,而是它的特化。
Test test1 = new Test();
here, new Test() means create new instance of class Test and assign it to reference test1.
Class<Test> test2 = Test.class;
Test test2Instance = test2.newInstance();
我无法(用文字)定义第一个陈述。另一方面,第二个陈述对我来说很清楚。
编辑
String is an instance of the class Class.
A string literal (e.g. "I am a string.") is an instance of the class String.
class literal (e.g. Hashtable.class) is an instance of the class Class.
Class<Test> test2 = Test.class;
意思是“给我代表 Test
class 的 Class
对象并将其存储在变量 test2
.
除了 Class
是泛型之外,这与泛型无关。这是关于 class 个对象。
Class<Test> test2 = Test.class;
此语句声明了一个名为 test2
的变量,类型为 Class<Test>
。它使用此类型的唯一实例初始化此变量,使用 class 文字表达式 Test.class
引用 class Test
.
Class<Test>
是泛型的特定类型。从字面上看,您正在定义一个 test2
类型的变量 Class<T>
和 T == Test
.
Class<T>
是一个参数类型,它依赖于 T,如果你添加约束 T == Test
那么你在谈论一个 Class<Test>
的变量(这是一个特定的不同类型).
与子类型的多态性相比,它是正交的。如果你有
class Base { .. }
class Derived extends Base { .. }
然后你写
Derived derived = ...
您可以毫无疑问地声明您正在声明一个名为 derived
且类型为 Derived
的变量。这是同一件事,但 Class<Test>
不是 Class<T>
的子类型,而是它的特化。