Java 类型T和对象之间有什么区别?

Java 类型T和对象之间有什么区别?,java,generics,Java,Generics,类型T和对象之间有什么区别 换句话说,列表和列表之间的区别是什么?列表称为泛型,因此保证列表始终包含类型为T的对象。而另一个列表不保证对象的类型相同,实际上,您只知道它们是对象。List是泛型类的名称列表是它的具体实例列表还不是一个类(它是一个泛型类,一个可以创建具体类的模板,但不是一个可以立即使用的类),列表是一个类。在运行时,没有区别:Java泛型是通过实现的,因此在所有实现中都使用相同的类 然而,在编译时,差异是巨大的,因为它可以避免每次使用对象时强制转换,从而使代码看起来更干净 考虑这个

类型T和对象之间有什么区别


换句话说,
列表
列表
之间的区别是什么?

列表
称为泛型,因此保证列表始终包含类型为T的对象。而另一个列表不保证对象的类型相同,实际上,您只知道它们是对象。

List
是泛型类的名称<代码>列表是它的具体实例<代码>列表还不是一个类(它是一个泛型类,一个可以创建具体类的模板,但不是一个可以立即使用的类),
列表
是一个类。

在运行时,没有区别:Java泛型是通过实现的,因此在所有实现中都使用相同的类

然而,在编译时,差异是巨大的,因为它可以避免每次使用对象时强制转换,从而使代码看起来更干净

考虑这个例子:

List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
for (Integer n : list) {
    System.out.println(n+5);
}
List List=new ArrayList();
增加第(1)款;
增加(2);
增加(3);
for(整数n:list){
系统输出打印项次(n+5);
}
它编译和运行良好,并且易于阅读。如果您想改用
列表
,代码看起来不会那么干净:

List<Object> list = new ArrayList<Object>();
list.add(1);
list.add(2);
list.add(3);
for (Object o : list) {
    // Now an explicit cast is required
    Integer n = (Integer)o;
    System.out.println(n+5);
}
List List=new ArrayList();
增加第(1)款;
增加(2);
增加(3);
用于(对象o:列表){
//现在需要显式强制转换
整数n=(整数)o;
系统输出打印项次(n+5);
}

不过,在内部,这两个代码段对其
列表
对象使用了相同的实现。

T=generic type agrumentStart reading:这根本没有意义。