我是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
实例线程安全的更好/更灵活的方法。