【发布时间】:2014-11-20 14:24:43
【问题描述】:
您似乎通常在没有指定类型参数的情况下实现了java.lang.Comparable 接口。
public abstract class Area implements Comparable {
@Override
public int compareTo(Object other) {
if (other instanceof Area)
return new Double(getArea()).compareTo(other.getArea());
return -1; // or something else
}
abstract public double getArea();
}
由于我只想比较苹果和苹果,我认为指定类型是有意义的。
public abstract class Area implements Comparable<Area> {
@Override
public int compareTo(Area other) {
// ...
如果我想引入另一个类来比较Area,我想我可以这样做:
public abstract class Area implements Comparable<Area>, Comparable<Volume> {
@Override
public int compareTo(Area other) {
// ...
}
@Override
public int compareTo(Volume other) {
// ...
}
}
但是java编译器告诉我:
Area.java:2: error: repeated interface
public abstract class Area implements Comparable<Area>, Comparable<Volume> {
^
Area.java:2: error: Comparable cannot be inherited with different arguments: <Area> and <Volume>
- 为泛型接口指定类型参数有什么缺点吗?
- 为什么 Java 不允许我进行这种多重实现?
注意:我使用的是 Java 版本 1.7.0_45
【问题讨论】:
-
我认为更好的问题是,您为什么认为这会有益?
newYork.compareTo(eleven)怎么会是苹果对苹果? :-)
标签: java interface compare comparable multiple-interface-implem