有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

为什么在Java中使用类似的接口?

我想问为什么我们在java中使用类似的接口?如果不使用可比较的接口,只创建compareTo方法不是更简单吗

而不是这样做:

//some class that implements comparable

public int compareTo(someClass someInstanceOfThatClass) {
    // do stuff that returns -1,0,or 1 
}

为什么我们不能这样做:

//some class that does NOT implement comparable, but we still 
//make a compareTo method 

public int compareTo(someClass someInstanceOfThatClass) {
    // do stuff that returns -1,0, or 1
}

我想我的问题是,如果我们可以在不受某个接口(compariable)的强迫的情况下创建一个comparieto方法,为什么还要麻烦实现compariable呢


共 (3) 个答案

  1. # 1 楼答案

    我认为它回到了接口的固有概念。 您始终确保实现了可比较接口的每个类都具有可比较的能力,有时您需要这种保证。 例如,如果您有一个具有可比较类型的参数的方法,那么您可以确保comapreTo是使用该参数实现的,并且该参数是语义上可比较的。 但如果没有接口,你就不能得到这种保证

  2. # 2 楼答案

    Comparable是一个接口,因此它强加了一个其他人可能遵循的契约。例如,仅当元素是Comparable的实例并且在内部依赖compareTo方法来实现排序时,调用Collections.sort(list)才有效

  3. # 3 楼答案

    Java的类型系统是nominal,而不是structural,因此仅仅拥有接口所需的方法不足以实现它;您还必须声明该类实现该接口。在其他一些语言(如Typescript)中,拥有具有正确签名的方法就足够了,但Java不是这样的

    如果您只是从自己的代码中调用compareTo方法,那么这可能无关紧要,但是如果您使用的类或方法来自标准库或其他以Comparable事物为参数的库,那么您的类将需要实现接口,以便您可以将对象传递给它们