我遇到了一个我不明白的问题。在添加表类的方法中,我想使用:
Arrays.binarySearch(asso, (a,b) -> a.cle.compareTo(b.cle));其中asso是包含键和值的关联对象数组。
通过使用类型字符串执行此代码,我在方法compareTo(Object)上得到一个“找不到符号”的错误。
这是我的代码:
测试:
Table<String,String> table0 = new Table<String,String>(10);
table0.add("1","int");方法:
import java.util.Arrays;
public class Table<C,V>{
Association[] asso;
public Table(int n){
asso = new Association[n];
}
public void add(C cle, V valeur){
asso[0] = new Association<C,V>(cle,valeur);
Arrays.sort(asso, (a,b) -> a.cle.compareTo(b.cle));
}
public class Association<C,V>{
public C cle;
public V valeur;
public Association(C cle,V valeur){
this.cle = cle;
this.valeur = valeur;
}
}
}而错误是:
../src/Table.java:15: error: cannot find symbol
Arrays.sort(asso, (a,b) -> a.cle.compareTo(b.cle));
^
symbol: method compareTo(Object)
location: variable cle of type C
where C is a type-variable:
C extends Object declared in class Table.Association谢谢你的帮助。
发布于 2018-12-06 11:13:53
添加绑定到泛型类型参数C的类型
class Table<C extends Comparable<C>,V>否则编译器不知道C实现了Comparable (因此必须有compareTo方法)。
也不要对数组使用原始类型(Association[])。使用:
Association<C,V>[] asso;再想一想,我还建议您将Association类设置为static
public class Table<C extends Comparable<C>,V> {
Association<C,V>[] asso;
public Table(int n) {
asso = new Association[n];
}
public void add(C cle, V valeur) {
asso[0] = new Association<C,V>(cle,valeur);
Arrays.sort(asso, (a,b) -> a.cle.compareTo(b.cle));
}
public static class Association<C,V> {
public C cle;
public V valeur;
public Association(C cle,V valeur){
this.cle = cle;
this.valeur = valeur;
}
}
}https://stackoverflow.com/questions/53650103
复制相似问题