我是 Java 和这种表达方式的新手。
public class name<Item>
这里有什么意义Item
?如果我删除它会发生什么?
那是泛型类的声明。Item
是在声明类的实例时(或可能在类被子类化时)填充的类型的参数名称。有关更多信息,请参阅有关泛型的 Java 教程。
至于如果你删除它会发生什么,这取决于name
类的主体是什么。但是,通常发生的事情是您需要替换Item
定义中所有出现的name
with Object
。在客户端代码中,您有时需要使用强制类型转换来编译内容,您将失去类型安全性。
它是定义一个类可以接受的通用类型。
最容易理解的例子是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;
这工作得很好。