62,614
社区成员
发帖
与我相关
我的任务
分享
public class Item<T extends Comparable<T>> implements Comparable<Item> {
private int s;
private T t;
public T getT() {
return t;
}
@Override
public int compareTo(Item o) {
return getT().compareTo(o.getT());
}
}
public class Item<T extends Comparable<T>> implements Comparable<Item<T>> {
private int s;
private T t;
public T getT() {
return t;
}
@Override
public int compareTo(Item<T> o) {
return getT().compareTo(o.getT());
}
}
主要问题还是compareTo方法里的参数Item必须也是指定泛型的,如果直接就传Item而不是Item<T>编译器就会认为它和声明的implements Comparable<Item<T>> 不一致。所以上面这样的代码就能通过编译了。
public class Item<T extends Comparable<T>> implements Comparable<Item <T extends Comparable<T>>> {
private int s;
private T t;
public T getT() {
return t;
}
@Override
public int compareTo(Item o) {
return getT().compareTo(o.getT());
}
}
编译的时候会报如下的错误:
Item.java:1: error: > expected
public class Item<T extends Comparable<T>> implements Comparable<Item <T extends Comparable<T>>> {
^
Item.java:1: error: '{' expected
public class Item<T extends Comparable<T>> implements Comparable<Item <T extends Comparable<T>>> {
^
Item.java:1: error: > expected
public class Item<T extends Comparable<T>> implements Comparable<Item <T extends Comparable<T>>> {
^
Item.java:1: error: <identifier> expected
public class Item<T extends Comparable<T>> implements Comparable<Item <T extends Comparable<T>>> {
^
Item.java:2: error: '(' expected
private int s;
^
5 errors