我正在尝试编写一个类 TelemeterTester,它实现 Telemeter 类。遥测仪扩展了比较器。我不断收到此运行时错误...
TelemeterTester.java:12: error: cannot find symbol
return e1.compareTo(e2);
^
symbol: method compareTo(Comparable)
location: variable e1 of type Comparable
where Comparable is a type-variable:
Comparable extends Object declared in class TelemeterTester
1 error
这是 Telemeter 接口(interface)的代码
/** @param <E> the type on which distance and order are defined
*
*/
public interface Telemeter<E> extends Comparator<E> {
/**
* Returns the distance between e1 and e2.
*
* @param e1 the first object
* @param e2 the second object
* @return the distance between e1 and e2
*
*/
double distance(E e1, E e2);
}
这是我的 TelemeterTester 类的代码,它实现了 Telemeter
public class TelemeterTester<Comparable> implements Telemeter<Comparable>{
private TelemeterTester() {}
public double distance(Comparable e1, Comparable e2) {
return 0;
}
public int compare(Comparable e1, Comparable e2) {
return e1.compareTo(e2);
}
}
谁能向我解释一下我做错了什么?我不太了解泛型,并且我已经被这个错误的变体困扰了几个小时。
最佳答案
您的 TelemeterTester 应定义如下:
public class TelemeterTester<E extends Comparable<E>> implements Telemeter<E> {
private TelemeterTester() {
}
public int compare(E o1, E o2) {
return o1.compareTo(o2);
}
@Override
public double distance(E e1, E e2) {
return 0;
}
}
并称为:
TelemeterTester<Integer> t = new TelemeterTester<Integer>();
System.out.println(t.compare(2, 2));
记住类型 Integer 实现 Comparable<Integer>
关于java - 如何使用泛型类型实现接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24074366/