Java通用类型变量

易卜拉欣·纳杰尔(Ibrahim Najjar):

我的问题是关于泛型类和方法中使用的类型变量。

为什么我们不能做这样的事情T = new T();,换句话说,为什么我们不能构造变量类型的对象呢?

我知道在编译过程中会删除通用信息,并且所有信息都将转换为
Object,那么为什么编译器不假定该T对象是对象并让我们构造它呢?

sleske:

问题在于,在运行时JVM不知道其T实际代表的(该信息不会在运行时保留,这就是“类型擦除”的含义)。因此,JVM只是看到您要构造一个new T,但不知道实际调用哪个构造函数-因此是不允许的。

有解决方法,但是它不能按照您的建议工作。

为什么编译器不假定T是一个对象并让我们构造它?

好吧,当然,运行时可以java.lang.Object为您构造一个实例,但这并没有真正的帮助,因为您确实想要一个T

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章