
问题在于称为的通用类型
String。这是泛型类型参数与实际类之间的冲突
String。
因为类型参数
String是 无界的
,Java编译器会将其替换
Object,因此方法的参数
compare作品
Object和对象类没有
compareTo方法,因此,你必须投。
尝试下面的示例,效果很好。
class SortComparator<T> implements Comparator<String>{ @Override public int compare(String o1, String o2) { // TODO Auto-generated method stub return o1.compareTo(o2); }}请查看有关泛型类型清除的
Java文档
在类型擦除过程中,Java编译器将擦除所有类型参数,如果类型参数是有界的,则将每个参数替换为其第一个边界;如果类型参数是无界的,则将其替换为对象。
下面的Example直接从上面的Java文档复制而来,以更加清楚。
考虑以下表示单个链接列表中的节点的通用类:
public class Node<T> { private T data; private Node<T> next; public Node(T data, Node<T> next) } this.data = data; this.next = next; } public T getData() { return data; } // ...}由于类型参数T是无界的,因此Java编译器将其替换为Object:
public class Node { private Object data; private Node next; public Node(Object data, Node next) { this.data = data; this.next = next; } public Object getData() { return data; } // ...}欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)