我是Java和这种表达方式的新手。
public class name<Item>
这里Item
有什么意义?如果我删除它会发生什么?
答案 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;
这很好用。