没有证据,我相信你在谈论
Java’s Generics的支持……
Generics allow you to abstract over types
在Java 5之前,很难提供能够支持多种不同类型对象的类,而无需为每种特定情况编写代码,因此人们通常会传递Object.
这导致在运行时做出许多困难的选择,您必须进行运行时检查以查看是否可以将给定的Object转换为可用的类型…例如
List myIntList = new LinkedList(); // 1
myIntList.add(new Integer(0)); // 2
Integer x = (Integer) myIntList.iterator().next(); // 3
现在,这是相当明显的,但如果你只传递一个List,你必须检查列表中的每个元素是否正确……
但现在,我们可以做到这一点……
List myIntList = new LinkedList(); // 1'
myIntList.add(new Integer(0)); // 2'
Integer x = myIntList.iterator().next(); // 3'
这是一个合同,基本上说“这个列表只包含整数类型的对象”.
使用泛型,您可以构造一个能够处理多个不同数据类型或一系列数据类型的类(即约束参数,以便必须从特定父类型扩展).
Iterator extends Number> itNum;
基本上说,这将包含从Number继承的对象,包括Integer,Long,Double,Float ……
通常在方法和类减速中你会看到类似于……的东西
public class MyGenericClass {...}
要么
public class MyGenericClass {...}
这允许您将T称为具体对象类型,例如……
public class MyGenericClass {
private T value;
public MyGenericClass(T value) {
this.value = value;
}
}
这允许编译器(和JVM)基本上用音乐会类型“替换”标记T(好吧,它比那更复杂,但那是魔术)……
这允许做像……这样的事情
... new MyGenericClass(new MySuperObject());
... new MyGenericClass(new MySuperSuperObject());
并且知道它只会接受我指定的对象类型……
请仔细阅读第一段中的链接,我确信它可以做得更公正然后我可以;)