为什么在实例化具有具体类型的对象时不可能对变量使用泛型类型?

阿列克谢·加拉诺夫(Alexey Galanov)
class A{}
class B extends A {}
class C extends B {}
class D<C> {
    C c = new A(); // COMPILER ERROR
}

类型擦除代码变为后:

class D {
    Object c = new A();
}

那么,这是什么问题呢?

乔恩·斯基特

那么,这是什么问题呢?

第一个问题是,在中D<C>C是指称为的类型参数C而不是Cextends的类B接下来,即使忽略泛型,

C c = new A(); // Invalid

...不会编译...相反,通常情况下:

A a = new C(); // Normally fine - but not if C is a type parameter!

假设您尝试使用:

D<String> d = new D<String>();

然后,您实际上是在要求编译器认为这一行有效:

String c = new A();

那显然是坏的。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从泛型类型继承时,为什么必须具有父类型限定才能使用嵌套类型?

来自分类Dev

从变量实例化泛型类型

来自分类Dev

实例化泛型类型时,InvalidCastException

来自分类Dev

具有具体化泛型的内联函数在后台服务中使用时抛出非法类型变量引用异常

来自分类Dev

为什么不能对两个泛型类型参数使用协方差?

来自分类Dev

为什么在声明常量变量后就不可能对其进行初始化?

来自分类Dev

为什么泛型 T 仅在具有约束时才被推断为文字类型?

来自分类Java

当未指定类型参数时,为什么Java泛型原始类会擦除对象的所有泛型?

来自分类Dev

使用具有泛型类型的接口扩展时,值不可分配给类型“部分”

来自分类Dev

为什么在声明使用泛型定义的结构的变量时必须添加类型?

来自分类Dev

使用泛型时,如何定义泛型类型的静态实例化器?

来自分类Dev

实例化泛型类型

来自分类Dev

为什么直接使用泛型值是不可能的,但如果从 Dart 中的方法返回也是可能的

来自分类Dev

为什么在具有可比约束的泛型函数中丢失泛型类型信息?

来自分类Java

为什么我不访问泛型类型类中的实例变量?

来自分类Java

javac错误:具有泛型的不可转换类型?

来自分类Dev

为什么不可能对结论中使用的术语进行归纳?

来自分类Java

用泛型类型实例化抽象类的对象

来自分类Dev

实例化泛型类型以支持自定义对象

来自分类Dev

为什么带有泛型返回的此方法不能正确使用泛型类型?

来自分类Dev

为什么泛型类型的实例类与泛型类型的类不同?

来自分类Java

为什么Java编译器失去构造函数实例化轨道泛型类型的?

来自分类Dev

为什么可以在不指定泛型类型参数的情况下实例化泛型类

来自分类Dev

显式实例化具有泛型类型的功能模板

来自分类Dev

在Swift 3中无法实例化具有泛型类型AnyObject的NSFetchedResultController

来自分类Dev

如何使用泛型类型获取具有相同类型的对象

来自分类Dev

Scala-为什么使用具有两个泛型参数的超类型会导致Scala类型检查器对子类型进行不同的处理?

来自分类Dev

引用相同类型但具有任何具体类型的泛型结构

来自分类Dev

当用`new`实例化泛型时,包括类型参数与否之间有实际的区别吗?

Related 相关文章

  1. 1

    从泛型类型继承时,为什么必须具有父类型限定才能使用嵌套类型?

  2. 2

    从变量实例化泛型类型

  3. 3

    实例化泛型类型时,InvalidCastException

  4. 4

    具有具体化泛型的内联函数在后台服务中使用时抛出非法类型变量引用异常

  5. 5

    为什么不能对两个泛型类型参数使用协方差?

  6. 6

    为什么在声明常量变量后就不可能对其进行初始化?

  7. 7

    为什么泛型 T 仅在具有约束时才被推断为文字类型?

  8. 8

    当未指定类型参数时,为什么Java泛型原始类会擦除对象的所有泛型?

  9. 9

    使用具有泛型类型的接口扩展时,值不可分配给类型“部分”

  10. 10

    为什么在声明使用泛型定义的结构的变量时必须添加类型?

  11. 11

    使用泛型时,如何定义泛型类型的静态实例化器?

  12. 12

    实例化泛型类型

  13. 13

    为什么直接使用泛型值是不可能的,但如果从 Dart 中的方法返回也是可能的

  14. 14

    为什么在具有可比约束的泛型函数中丢失泛型类型信息?

  15. 15

    为什么我不访问泛型类型类中的实例变量?

  16. 16

    javac错误:具有泛型的不可转换类型?

  17. 17

    为什么不可能对结论中使用的术语进行归纳?

  18. 18

    用泛型类型实例化抽象类的对象

  19. 19

    实例化泛型类型以支持自定义对象

  20. 20

    为什么带有泛型返回的此方法不能正确使用泛型类型?

  21. 21

    为什么泛型类型的实例类与泛型类型的类不同?

  22. 22

    为什么Java编译器失去构造函数实例化轨道泛型类型的?

  23. 23

    为什么可以在不指定泛型类型参数的情况下实例化泛型类

  24. 24

    显式实例化具有泛型类型的功能模板

  25. 25

    在Swift 3中无法实例化具有泛型类型AnyObject的NSFetchedResultController

  26. 26

    如何使用泛型类型获取具有相同类型的对象

  27. 27

    Scala-为什么使用具有两个泛型参数的超类型会导致Scala类型检查器对子类型进行不同的处理?

  28. 28

    引用相同类型但具有任何具体类型的泛型结构

  29. 29

    当用`new`实例化泛型时,包括类型参数与否之间有实际的区别吗?

热门标签

归档