0
我有一些實現接口的對象,所以可以使用某些方法(getTime,getValue等)。接口和可比較對象
但是我也想強制這些對象使用Comparable以相同的方式排序,但我無法在界面中定義實體(至少在Android Java中)。
我該怎麼辦?
我有一些實現接口的對象,所以可以使用某些方法(getTime,getValue等)。接口和可比較對象
但是我也想強制這些對象使用Comparable以相同的方式排序,但我無法在界面中定義實體(至少在Android Java中)。
我該怎麼辦?
您可以在界面中使用default
關鍵字(這是不是簽名的一部分)定義機構:
public interface MyInterface extends Comparable<MyInterface> {
@Override
default int compareTo(MyInterface other) {
return 0;
}
}
但是,如果你想在不同的標準進行排序,不時。通過sort
方法比較器是一個更好的選擇。
public interface MyInterface {
int getTime();
int getValue();
}
然後調用,如:
List<MyInterface> list= ...;
list.sort((mi1, mi2) -> Integer.compare(mi1.getTime(), mi2.getTime())); // sorts by time
list.sort((mi1, mi2) -> Integer.compare(mi1.getValue(), mi2.getValue())); // sorts by value
你說的沒有簽名的一部分呢?默認實際上是什麼意思? –
如果我已經實現了兩個具有相互矛盾的可比較方法的接口,該怎麼辦? –
@ArukaJ我的意思是,''''''''''''''''''''''''''''''''''''''比較'<...>''''沒有''''''''關鍵字。但用default關鍵字覆蓋''''compareTo'''方法仍然是可能的。您只能覆蓋具有相同簽名的方法。 –