有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java向量声明语法

我对Java还不熟悉,我一直在思考向量声明之间的语法差异

Vector<Object> v = new Vector<>(SIZE);

这个呢

Vector v = new Vector(SIZE, GROWABLESIZE);

我知道这两种类型都将创建一个新的对象类型向量(可转换为其他类型),并可以存储多达多个大小的对象,但它们在内部/功能上有何区别

我在为一个大学项目使用JTable时学习了第一个语法,后来的语法在课堂上(和书本上)教授。我无法区分这两者


共 (1) 个答案

  1. # 1 楼答案

    运行时的行为差异在于,第二个为capacityIncrement指定了一个值:

    capacityIncrement : the amount by which the capacity is increased when the vector overflows

    编译时的不同之处在于,第二个使用的是原始类型。这意味着编译器会发出警告
    即使您想将Object放在这个向量中(这通常是一种糟糕的做法),声明一个Vector<Object>的泛型类型也更清晰,并显示出您的意图

    因此:

    Vector<Object> v = new Vector<>(SIZE);
    

    或者:

    Vector<Object> v = new Vector<>(SIZE, GROWABLESIZE);
    

    你更好

    但通常情况下,您不想使用Vector这是一个线程安全的遗留类,它仍然主要出于追溯兼容性的原因而存在
    静态Collections.synchronizedList()方法通常是使List实例线程安全的更好/更灵活的方法