我如何告诉 Java 接口实现了 Comparable?
How do I tell Java that an interface implements Comparable?
我有一个名为 IDebt 的接口,还有一个 class 实现了名为 Debt.
的接口
我还有一个由实现 IDebt 接口的对象组成的列表:
List<IDebt> debtList = new ArrayList<IDebt>();
classDebt 实现 Comparable,但是当我执行 Collections.sort(debtList) 时,我得到一个错误,因为 Java 无法知道实现 IDebt 的对象实现了 Comparable。
我该如何解决这个问题?
你可以这样做:
public static interface MyInterface extends Comparable<MyInterface> {
}
public static class MyClass implements MyInterface {
@Override
public int compareTo(MyInterface another) {
return 0; //write a comparison method here
}
}
然后
List<MyInterface> test = new ArrayList<>();
Collections.sort(test);
会起作用
更新:也用于排序,也许这更有意义:
Collections.sort(test, new Comparator<MyInterface >() {
@Override
public int compare(MyInterface lhs, MyInterface rhs) {
return 0;
}
});
使您的 IDept
接口扩展 Comparable
interface IDept extends Comparable{
....
}
接口可以扩展其他接口。
我有一个名为 IDebt 的接口,还有一个 class 实现了名为 Debt.
的接口我还有一个由实现 IDebt 接口的对象组成的列表:
List<IDebt> debtList = new ArrayList<IDebt>();
classDebt 实现 Comparable,但是当我执行 Collections.sort(debtList) 时,我得到一个错误,因为 Java 无法知道实现 IDebt 的对象实现了 Comparable。
我该如何解决这个问题?
你可以这样做:
public static interface MyInterface extends Comparable<MyInterface> {
}
public static class MyClass implements MyInterface {
@Override
public int compareTo(MyInterface another) {
return 0; //write a comparison method here
}
}
然后
List<MyInterface> test = new ArrayList<>();
Collections.sort(test);
会起作用
更新:也用于排序,也许这更有意义:
Collections.sort(test, new Comparator<MyInterface >() {
@Override
public int compare(MyInterface lhs, MyInterface rhs) {
return 0;
}
});
使您的 IDept
接口扩展 Comparable
interface IDept extends Comparable{
....
}
接口可以扩展其他接口。