Telemeterクラスを実装するクラスTelemeterTesterを作成しようとしています。テレメータはコンパレータを拡張します。このランタイムエラーが発生し続けます...
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
これがテレメーターインターフェースのコードです
/** @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);
}
Telemeterを実装するTelemeterTesterクラスのコードは次のとおりです
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));
整数型の実装を覚えておいてください Comparable<Integer>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加