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