gpt4 book ai didi

java - Eclipse 告诉我 Long 不可比较

转载 作者:行者123 更新时间:2023-11-29 06:32:19 26 4
gpt4 key购买 nike

我在这里遇到了一个奇怪的情况,即 eclipse 告诉我 Long 是“不是有界参数 <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
}
}


我尝试将抽象类 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>>

但是,在具体类中我收到一条通知,建议我将类型参数更改为 <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>{

您只是用您自己的类型变量名称覆盖了名称 LongString

由于 T 没有界限,它不一定是 Comparable 并且编译器无法将它们验证为 Pair 的类型参数。

你想要的是

public class LogBookRecord extends Pair<Long, String>{

一个非泛型的类,它提供具体类型作为 Pair 父类(super class)声明的类型参数。

The Java Language Specification describes the class declaration syntax.

关于java - Eclipse 告诉我 Long 不可比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30463004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com