gpt4 book ai didi

java - 如何使用泛型类型实现接口(interface)?

转载 作者:行者123 更新时间:2023-11-30 07:08:19 25 4
gpt4 key购买 nike

我正在尝试编写一个实现 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

这是遥测接口(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);
}

这是我实现 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));

记住类型 Integer 实现 Comparable<Integer>

关于java - 如何使用泛型类型实现接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24074366/

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