Java 如何实现可比较的接口,为什么要实现它

Java 如何实现可比较的接口,为什么要实现它,java,comparable,Java,Comparable,重写可比较接口的compareTo()方法的最佳方法是什么?此外,当我们可以编写自己的compareTo()方法而不需要实现时,为什么还要实现Comparable接口呢。以以下座椅级别为例: public class Seat { private final String seatNumber; private double price; public Seat(String seatNumber, double price) {

重写可比较接口的compareTo()方法的最佳方法是什么?此外,当我们可以编写自己的compareTo()方法而不需要实现时,为什么还要实现Comparable接口呢。以以下座椅级别为例:

public class Seat {
        private final String seatNumber;
        private double price;

        public Seat(String seatNumber, double price) {
            this.seatNumber = seatNumber;
            this.price = price;
        }

        public int compareTo(Seat seat) {
            return this.seatNumber.compareToIgnoreCase(seat.getSeatNumber());
        }
}
尽管我们没有实现可比较的接口,但上述功能仍然有效,那么我们为什么要实现它呢

为什么我们需要实现可比较的接口 可以编写自己的compareTo()方法,而无需实现

比如说。签名是

public static <T extends Comparable<? super T>> void sort(List<T> var0)
这意味着我们不必武断地定义座位是按数量还是按价格自然订购的。我们可以有一段代码使用一个比较器按价格排序,另一段完全独立的代码使用另一个比较器按座位号排序


实现
Comparable
的一个优点是,您不需要像使用
比较器那样公开内部类细节来确定实例顺序。上面的工作原理是“上面的工作原理”甚至不编译:如果您没有重写(或实现)一个方法,就不能使用
@Override
。如果您认为您正在运行此代码,那么实际上您正在运行以前编译过的版本。请尝试将这些代码添加到合同的
SortedSet
接口中,以便您的类在特殊集合(如
TreeMap
TreeSet
)中正常运行。。除非您想自己实现集合类。。
public static <T> void sort(List<T> var0, Comparator<? super T> var1)