矢量声明语法



我是Java的新手,并且坚持Vector声明之间的语法差异。

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

而这个

Vector v = new Vector(SIZE, GROWABLESIZE);

我知道这两者都会创建一个新的对象类型向量(可转换为其他类型的(,并且可以存储多达 SIZE 数量的对象,但它们在内部/功能上有何不同?

我在与 JTable 合作进行大学项目时学会了第一个语法,后来的语法是在讲座(和书籍(中教授的。我无法区分这两者。

运行时的行为区别在于第二个为capacityIncrement指定了一个值:

容量增量:容量增加的量 矢量溢出

编译时的区别在于第二个使用原始类型。这意味着编译器将发出有关此的警告。
即使你想在这个向量中放置/获取Object(这通常是一种不好的做法(,声明一个Vector<Object>的泛型类型会更清晰,并表明你的意图。

所以这个:

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

或者:

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

更好。

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

最新更新