java - 为什么对 Vector、ArrayList 和整个 Java 集合框架使用弱类型数组

标签 java generics strong-typing

我想知道为什么 Vector api(以及其他)没有像下面的代码那样选择对其底层数组使用强类型?为什么使用 week typing Object ?强类型不是更好吗,因为类型安全在编译时就解决了?

public class Vector<E> {
    private static final initialCapacity = 2;
    protected E[] elementData;

    private Vector(Class<E> c) {
        @SuppressWarnings("unchecked")
        final E[] elementData = (E[]) Array.newInstance(c, initialCapacity);
    }   
}

最佳答案

VectorArrayList 和整个集合框架都是在泛型出现之前编写的。当时他们并没有真正的替代方案,为了向后兼容,必须保留这种方式。

关于java - 为什么对 Vector、ArrayList 和整个 Java 集合框架使用弱类型数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22899148/

相关文章:

java - Veracode XML 外部实体引用 (XXE)

java - 使用 Rest 模板发送文件时 MultipartFile 为 null

java属性不会再次加载同一流的输入流

Java从类实例中获取表示类的泛型类型

haskell - 使用 ListLike 的二义性类型

c# - 使用 ASP.Net MVC3 显示 byte[] 中包含的图像

c# - 将强类型属性名称作为参数传递

java - 无法将数据库状态与 hibernate 中的 session 异常同步

swift - 有没有比这更好的方法在 Swift 中进行依赖注入(inject)?

java - 具有静态方法的泛型