java公共类名称<item> </item>

时间:2013-04-03 13:46:15

标签: java

我是Java和这种表达方式的新手。

public class name<Item> 

这里Item有什么意义?如果我删除它会发生什么?

2 个答案:

答案 0 :(得分:6)

这是泛型类的声明。 Item是在声明类的实例时(或者可能在类被子类化时)填充的类型的参数名称。有关详细信息,请参阅Java tutorial on generics

如果删除它会发生什么,这取决于name类的主体是什么。但是,通常情况下,您需要使用Item替换name定义中出现的所有Object。在客户端代码中,您偶尔需要使用强制转换来编译内容,并且您将失去类型安全性。

答案 1 :(得分:2)

定义一个类可接受的通用类型。

最容易理解的例子是List

如果您创建一个,则可以指定要包含该列表的元素类型。

例如,如果您想要一个只包含String对象的列表,可以这样定义:

List<String> myStringList;

执行此操作时,您可以确保只将字符串添加到列表中。那是Type safety

您甚至无法为列表分配另一个具有此类型安全性的子类型列表,这是一个示例:

List<Number> myNumberList;
List<Integer> myIntegerList = new ArrayList<Integer>();
myNumberList = myIntegerList;

如果您尝试这样就会收到此错误:

  

类型不匹配:无法从List<Integer>转换为List<Number>

但是在这些情况下还有一些事情需要做,你可以通过更改List类型定义来使前一个场景工作:

List<? extends Number> myNumberList;
List<Integer> myIntegerList = new ArrayList<Integer>();
myNumberList = myIntegerList;

这很好用。