我在java中看到了一些向量被声明为的例子
Vector v = new Vector()
在一些例子中,
Vector<String> = new Vector<String>()
我不确定后一个声明是做什么的?它是否指定了 Vector shud 所包含的对象类型?
如果是,那么如果我使用第一个声明声明一个向量,我可以使用任何类型的对象,如果我使用第二个声明,那么该对象只能是 <> 内的类型?
这是 Java 的一个特性,称为泛型。您可以在此处找到 Oracle 官方资源。
Vector v = new Vector();
是相同的
Vector<Object> v = new Vector<Object>()
第一行定义了可以是任何类型的a Vector
of s。Object
第二行使用Java 泛型并定义Vector
仅包含String
s 的 a。
正如其他海报所回答的那样,您确实在处理“通用”类。
我建议不要使用 Vector clsas,因为它已被弃用。相反,使用 ArrayList。
使用泛型的一个很好的优势是编译器将为您提供所谓的“类型安全”。当您最初将 ArrayList 声明为ArrayList<Ball>
时,编译器只会让您Ball
在该列表中存储类(或其子类)的对象。此外,每当您从列表中选择一个对象时,即myList.get(index)
从该调用返回的对象会自动转换为Ball
.
编写泛型类可能很棘手,但使用它们可以让您真正清理代码。
如果您想了解更多信息,这里是泛型Java 教程的链接。