我见过这样的代码并且无法理解它的意义:
public class ClassA{
public <T> void getContactName(ContactList<T> contactList){
//do something
}
}
基本上我没理解这一点。该类编译没有任何错误。我认为ClassA也应该通过参数&#39; T&#39; 。
由于
答案 0 :(得分:6)
定义
public <T> void getContactName(ContactList<T> contactList){
//do something
}
表示只有方法是通用的,名称为T
的类型仅在方法范围内有效。如果T
类型参数仅在单个方法中使用,则不需要该类是通用的。
作为旁注,请记住,在Java中,您可以使用泛型:
但是你不能通用:
答案 1 :(得分:2)
最好在Generic Methods和Generic Types上的 Java Tutorial 以及 detail 示例和泛型方法的使用下进行解释。
这是一个示例(内置Arrays
类)。查看方法签名,确保方法返回类型与方法参数完全相同,因为类本身不是通用的,但您可以将方法设置为泛型。
class Arrays {
public static <T> List<T> asList(T... a) {
...
}
如上所述,您可以在课程static generic utility methods
中创建don't need to create object
。
答案 2 :(得分:1)
根据Java语言规范:
您可以使用以下方法:
new ClassA().<String>getContactName(contactList);
或者您无法指定类型参数
new ClassA().getContactName(contactList);
您可以阅读规范以获取更多详细信息以及您可以找到的here