似乎您通常在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