1

我在java中看到了一些向量被声明为的例子

Vector v = new Vector() 

在一些例子中,

Vector<String> = new Vector<String>()

我不确定后一个声明是做什么的?它是否指定了 Vector shud 所包含的对象类型?

如果是,那么如果我使用第一个声明声明一个向量,我可以使用任何类型的对象,如果我使用第二个声明,那么该对象只能是 <> 内的类型?

4

3 回答 3

4

这是 Java 的一个特性,称为泛型。您可以在此处找到 Oracle 官方资源。

Vector v = new Vector();  

是相同的

Vector<Object> v = new Vector<Object>()  
于 2012-09-12T19:59:02.467 回答
3

第一行定义了可以是任何类型的a Vectorof s。Object

第二行使用Java 泛型并定义Vector仅包含Strings 的 a。

于 2012-09-12T19:59:20.840 回答
0

正如其他海报所回答的那样,您确实在处理“通用”类。

我建议不要使用 Vector clsas,因为它已被弃用。相反,使用 ArrayList

使用泛型的一个很好的优势是编译器将为您提供所谓的“类型安全”。当您最初将 ArrayList 声明为ArrayList<Ball>时,编译器只会让您Ball在该列表中存储类(或其子类)的对象。此外,每当您从列表中选择一个对象时,即myList.get(index)从该调用返回的对象会自动转换为Ball.

编写泛型类可能很棘手,但使用它们可以让您真正清理代码。

如果您想了解更多信息,这里是泛型Java 教程的链接。

于 2012-09-12T20:13:11.540 回答