我写了一个泛型方法来对Type T的对象进行排序。 我的编译器说“找不到符号:方法lte(T)。
任何想法究竟是我的问题是什么?
interface Comparable<T>{
boolean lte(T t);
}
class Sort<T extends Comparable<T>> {
static <T> void sort(T[] s) {
for (int i = 0; i<s.length; i++) {
for (int j = i+1; j < s.length; j++) {
if (s[i].lte(s[j])) {
T t;
t = s[i];
s[i] = s[j];
s[j] = t;
}
}
}
}
public static void main(String[] args) {
String[] names = {"Pete","Jill","May","Anne","Tim"};
sort(names);
for (String s:names)
System.out.println(s);
}
}
答案 0 :(得分:1)
您已使用另一个 sort
声明将<T>
方法设为通用,但它不是Comparable
。您的sort
方法为static
,因此无法使用该类的<T>
。实际上,没有使用类<T>
。试试这个:
// Not generic here anymore
class Sort {
// Bound goes here
static <T extends Comparable<T>> void sort(T[] s) {
此外,String
不会扩展您的Comparable
界面,因此无效(String
甚至没有lte
方法。您需要传递一些实现您的 Comparable
。
充其量,将界面命名为与内置(和众所周知的)界面相同的名称令人困惑。我建议您将Comparable
界面重命名为Lteable
。