java - 为什么编译器允许我将泛型集合分配给声明为类特定集合的变量?

标签 java generics

我无法理解为什么 java 编译器允许将非特定集合分配给已指定变量的集合。像这样:

    ArrayList list = new ArrayList();
    // Operations on list
    ArrayList<String> stringList = list;

这里可能会出现各种类型的转换错误,在我看来,如果编译器一开始就阻止你这样做会更有意义。

我问这个问题只是因为我对这种语言有点奇怪的方面感到好奇,我实际上并没有遇到让代码工作的问题(尽管我可能有一天需要使用 ArrayList 与各种其中的类)。

最佳答案

它只是为了支持泛型或 java 5 之前的遗留代码。

Java SE 5 中引入的泛型和 Collection 很久以前就开始运行了。因此,如果您看到 1.5 之前的 Collection 框架,您会看到 ArrayList , 没有generic

关于java - 为什么编译器允许我将泛型集合分配给声明为类特定集合的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12815550/

相关文章:

java - 如何处理参数值中的特殊字符?

java - JFrame 和 JPanel 分离有问题吗?

c# - 将属性作为参数的通用函数

java泛型,如何从两个类扩展?

c# - 如果缺少元素,如何处理失败的 LINQ 表达式

java - 一般套接字问题 - 将 C++ 结构从 Java 转移到 C++

java - 表关系 多对多没有 sql 中的中间表?

java - 查找字符串格式的数字中的字符

Swift 在泛型类中使用泛型函数

haskell - 是否可以在派生 Generic 的记录数据类型中列出字段的名称和类型?