当前位置: 首页 > 知识库问答 >
问题:

Java通用接口扩展了可比较的

虞华翰
2023-03-14

我想创建一个类,比如Employee,它实现了通用接口Compariable,并重写了方法equals、hashCode和toString。。。我怎样才能做到呢?

这样可以吗

interface MinMax<T extends Comparable<T>> {

T equals();
T hashCode();
T toString();

}

class Employee<T extends Comparable<T>> implements MinMax<T> {

 public T equals(){

  }

  public T hashCode(){

  }

  public T toString(){

  }



  }

共有3个答案

霍修筠
2023-03-14

为此,您不需要创建自己的单独接口。

Equals、hashCode和toString是对象类的方法,您的新类将自动成为该对象类的子类,因此它可以访问这些方法,而无需您执行任何操作。要重写这些方法,只需在新类中创建与这些方法相同名称的方法即可。

Compariable是一个通用接口,因此在有字母T的地方,需要用所需的类替换它。由于您可能希望将该类的一个成员与同一类的另一个成员进行比较,因此您将用Employee替换它。类本身不需要是泛型的,即使它正在实现泛型接口,所以代码中不应该有任何T

“extends”一词是指当您想要创建一个类,而该类是另一个类的子类时。或者当您希望泛型接口中的类是某个类的子类时。你不需要为你的班级做这件事,所以任何地方都不需要extends这个词。

江俊能
2023-03-14

一个类可以实现您想要的任意多个接口,也不需要对它们进行“分组”:

class Employee implements Comparable, MinMax{ ... }

无论如何,您必须提供接口方法实现。

燕富
2023-03-14

这个问题有两个部分。

第1部分:覆盖equals、hashCode和toString。

只需使用新实现在新类中重新定义这些方法。

class Employee {

    //fields and other methods

    public boolean equals(Object other) {
        //new implementation here
    }
    public int hashCode() {
        //make sure two equal objects produce the same hashCode
    }
    public String toString() {
        //return whatever you want here
    }
}

第2部分:实现可比接口。

我想你希望与其他员工进行比较。声明它实现Comparable,并实现接口描述的compareTo方法。

public Employee implements Comparable<Employee> {

    //fields and methods

    public int compareTo(Employee e) {
        //new implementation. Should probably be consistent with equals.
    }
}
 类似资料:
  • 问题内容: 我必须实现一个RMI服务器,该服务器将成为其他两个RMI服务的前端。因此,我决定逻辑上要做的是使该接口实现其他两个服务的接口。 但是,StudentServer上有一种方法 我也想抛出一个错误,因为该服务还将在尝试添加详细信息之前验证该书是否确实存在。 这是可能的还是我的设计思想完全被取消了,实际上这是一个糟糕的设计思想,好像其他接口都已更改一样?而且,为里面的所有方法编写方法签名会更

  • 谁能解释一下为什么下面的代码不起作用: 但这一个有效: 换句话说,与创建普通类实例相比,接口实现何时是可互换的?当我使用compareTo()方法时会出现错误,该方法是Comparable接口的一部分,由所有包装类(如整数)实现。 所以我猜

  • 当我在浏览上面的接口时,在阅读了许多相同主题的站点后,我对这些接口的语法不是很清楚。 请考虑以下代码段: 如果每个查询都是可理解的。

  • 我是java新手,试图理解一些概念。这是一段我不懂的代码。 我知道这是怎么回事,但不明白为什么这是允许的。因此,我的问题是: 从java文档中,比较器[T]是一个接口。比较器[水果]怎么样?我将假设它是一个类,因为它必须覆盖比较函数。 为什么可以在{}中使用非参数构造函数和类定义来初始化FruitName比较器?我在比较器[T]的javadoc中没有找到这样的构造函数声明。 如有任何意见,将不胜感

  • 本文向大家介绍接口可以在Java中扩展多个接口吗?,包括了接口可以在Java中扩展多个接口吗?的使用技巧和注意事项,需要的朋友参考一下 是的,我们可以做到。一个接口可以扩展Java中的多个接口。 例: 输出:

  • 为什么它这样做,它有一个更好的做法?在sub接口中实现方法有什么区别吗?