Java类通用表达式语法

时间:2015-01-26 15:59:53

标签: java generics syntax expression

Test test1 = new Test();
  

此处, new Test()表示创建类Test的新实例并进行分配   参考test1。

Class<Test> test2 = Test.class;
Test test2Instance = test2.newInstance();

我无法定义(用语言)第一个陈述。另一方面,第二个声明对我来说非常清楚。

修改

  

String是类 Class 的实例。

     

字符串文字(例如“我是一个字符串。”)是该类的一个实例   的字符串

     

class literal(例如 Hashtable.class )是该类的一个实例   的

3 个答案:

答案 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>的子类型,而是它的特殊化。