Java通用接口扩展了Comparable

时间:2012-09-11 23:34:16

标签: java generics interface hashcode tostring

我想创建一个类,让我们说实现泛型接口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(){

  }



  }

3 个答案:

答案 0 :(得分:2)

问题分为两部分。

第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.
    }
}

答案 1 :(得分:1)

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

class Employee implements Comparable, MinMax{ ... }

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

答案 2 :(得分:0)

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

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

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

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