我是Java的新手,并且被Vector声明之间的语法差异所困扰。
Vector v = new Vector(SIZE, GROWABLESIZE);
还有这个
{{1}}
我知道这两种方法都会创建一个新的Object类型的Vector(可广播到其他类型),并且最多可以存储SIZE个对象,但是它们在内部/功能上有何不同?
我在与JTable合作进行大学项目时学习了第一个语法,后来的语法在讲座(和书籍)中讲授。我无法区分两者。
答案 0 :(得分:1)
运行时的行为差异在于,第二个为capacityIncrement
指定了一个值:
capacityIncrement :在以下情况下增加容量的数量 向量溢出
编译时的区别是第二个使用原始类型。这意味着编译器将发出警告。
即使您想将Object
放入/获得此向量(通常是一种不好的做法),但声明为Vector<Object>
的泛型类型会更清楚并表明您的意图。
所以:
Vector<Object> v = new Vector<>(SIZE);
或那个:
Vector<Object> v = new Vector<>(SIZE, GROWABLESIZE);
更好。
但是通常您不希望使用Vector
,它是线程安全的旧类,主要是出于回溯兼容性的原因而仍然存在。
通常,Collections.synchronizedList()
静态方法是使List
实例线程安全的更好/更灵活的方法。