Eclipse 告诉我 Long 不可比较
Eclipse tells me that Long is not Comparable
我在这里遇到了一个奇怪的情况,即eclipse告诉我Long是"not a valid substitute for the bounded parameter <T extends Comparable<? super T>>
"。关于可能是什么原因的任何建议?我在下面粘贴相关代码
抽象对:
public abstract class Pair<T extends Comparable<? super T>, R> implements Comparable<Pair<T, R>>{
private T tt;
private R rr;
public Pair(T t, R r){
tt = t;
rr = r;
}
@Override
public String toString(){
return tt+ ": " +rr.toString();
}
}
具体对:
import utilities.Pair;
public class LogBookRecord<Long, String> extends Pair<Long, String>{
LogBookRecord(Comparable t, Object r) {
super(t, r);
// TODO Auto-generated constructor stub
}
}
我尝试将摘要 class header 更改为:
public abstract class Pair<T extends Comparable<T>, R> implements Comparable<Pair<T, R>>
没用,还给:
public abstract class Pair<T, R> implements Comparable<Pair<T, R>>
但是,具体来说 class 我收到一条通知,建议我将类型参数更改为 <Comparable, Object>
。
public class LogBookRecord<Long, String> extends Pair<Long, String>{
^ ^
| |
generic type variable declaration (new type names) |
generic type arguments
该代码等同于
public class LogBookRecord<T, R> extends Pair<T, R>{
您只是用自己的类型变量名称遮盖了名称 Long
和 String
。
因为 T
没有边界,所以它不一定是 Comparable
并且编译器无法将它们验证为 Pair
.
的类型参数
你要的是
public class LogBookRecord extends Pair<Long, String>{
一个非泛型的 class,它提供具体类型作为 Pair
superclass 声明的类型参数。
The Java Language Specification describes the class declaration syntax.
我在这里遇到了一个奇怪的情况,即eclipse告诉我Long是"not a valid substitute for the bounded parameter <T extends Comparable<? super T>>
"。关于可能是什么原因的任何建议?我在下面粘贴相关代码
抽象对:
public abstract class Pair<T extends Comparable<? super T>, R> implements Comparable<Pair<T, R>>{
private T tt;
private R rr;
public Pair(T t, R r){
tt = t;
rr = r;
}
@Override
public String toString(){
return tt+ ": " +rr.toString();
}
}
具体对:
import utilities.Pair;
public class LogBookRecord<Long, String> extends Pair<Long, String>{
LogBookRecord(Comparable t, Object r) {
super(t, r);
// TODO Auto-generated constructor stub
}
}
我尝试将摘要 class header 更改为:
public abstract class Pair<T extends Comparable<T>, R> implements Comparable<Pair<T, R>>
没用,还给:
public abstract class Pair<T, R> implements Comparable<Pair<T, R>>
但是,具体来说 class 我收到一条通知,建议我将类型参数更改为 <Comparable, Object>
。
public class LogBookRecord<Long, String> extends Pair<Long, String>{
^ ^
| |
generic type variable declaration (new type names) |
generic type arguments
该代码等同于
public class LogBookRecord<T, R> extends Pair<T, R>{
您只是用自己的类型变量名称遮盖了名称 Long
和 String
。
因为 T
没有边界,所以它不一定是 Comparable
并且编译器无法将它们验证为 Pair
.
你要的是
public class LogBookRecord extends Pair<Long, String>{
一个非泛型的 class,它提供具体类型作为 Pair
superclass 声明的类型参数。
The Java Language Specification describes the class declaration syntax.