class Dog {
private int variableA;
private int variableB;
private int variableC;
public Dog(int A, int B, int C) {
variableA = A;
...
}
@Override
public int hashCode() {
int result = 17;
return result;
}
@Override
public boolean equals(Object o) {
if (o == this)
return true;
if (o instanceof Dog)
return true;
return false;
}
Set<Dog> dogSet = new HashSet<>();
dogSet.add(new Dog(1,2,3))
dogSet.add(new Dog(2,3,4))
我想确保dogSet
中只有Dog的一个实例
我相信我的hashCode()
和equals()
实现了这一目标。这是我实施方式的最佳实践吗?
编辑
狗将有多种类型,而狗实际上是一个接口
public interface Dog
public class ShortDog extends Dog
public class BigDog extends Dog
public class OnlyOneDog extends Dog
...
并且实际上存在一个名为DogHouse
的类,该哈希集存在于其中
public class DogHouse
private Set<Dog> dogSet = new HashSet<>();
我们可以有很多Dog的实例(它们的子类型),但是我想确保dogSet对于OnlyOneDog
来说是唯一的,而我打算用hashcode和equals实现它。
我打算覆盖OnlyOneDog
中的哈希码+等于。这是OnlyOneDog的特例
还有更好的方法吗?