繁体   English   中英

Java通用接口扩展了Comparable

[英]Java generic interface extends Comparable

我想创建一个类让我们说实现泛型接口Comparable的Employee并覆盖方法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(){

  }



  }

问题分为两部分。

第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接口。

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

public Employee implements Comparable<Employee> {

    //fields and methods

    public int compareTo(Employee e) {
        //new implementation. Should probably be consistent with equals.
    }
}

一个类可以实现你想要的任意数量的接口,也不需要将它们“分组”:

class Employee implements Comparable, MinMax{ ... }

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

为此,您无需创建自己的独立界面。

Equals,hashCode和toString是对象类的方法,您的新类将自动成为它们的子类,因此它可以访问这些方法而无需您执行任何操作。 要覆盖这些方法,只需在新类中创建具有相同名称的方法,并使用您希望方法执行的操作。

Comparable是一个通用接口,所以如果你有字母T,你需要将它替换为你想要的类。 由于您可能希望将该类的成员与同一类的另一个成员进行比较,因此您将其替换为Employee。 您的类本身不需要是通用的,即使它实现了一个通用接口,所以代码中不应该有任何'T'

'extends'这个词适用于你想要创建一个类,它是另一个类的子类。 或者,当您希望通用接口中的类成为某个类的子类时。 您不需要为您的班级执行此操作,因此不需要在任何地方使用单词extends。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM