OnJava8-Examples/equalshashcode/SubtypeEquality2.java

39 lines
961 B
Java
Raw Normal View History

2017-01-10 14:11:16 -08:00
// equalshashcode/SubtypeEquality2.java
// (c)2021 MindView LLC: see Copyright.txt
2017-01-10 14:11:16 -08:00
// We make no guarantees that this code is fit for any purpose.
// Visit http://OnJava8.com for more book information.
import java.util.*;
class Dog2 extends Animal {
2017-05-01 14:33:10 -06:00
Dog2(String name, Size size) {
2017-01-10 14:11:16 -08:00
super(name, size);
}
@Override public boolean equals(Object rval) {
2017-01-10 14:11:16 -08:00
return rval instanceof Dog2 &&
super.equals(rval);
}
}
class Pig2 extends Animal {
2017-05-01 14:33:10 -06:00
Pig2(String name, Size size) {
2017-01-10 14:11:16 -08:00
super(name, size);
}
@Override public boolean equals(Object rval) {
2017-01-10 14:11:16 -08:00
return rval instanceof Pig2 &&
super.equals(rval);
}
}
public class SubtypeEquality2 {
public static void main(String[] args) {
Set<Animal> pets = new HashSet<>();
pets.add(new Dog2("Ralph", Size.MEDIUM));
pets.add(new Pig2("Ralph", Size.MEDIUM));
pets.forEach(System.out::println);
}
}
/* Output:
Dog2[0]: Ralph MEDIUM 931523a9
Pig2[1]: Ralph MEDIUM 931523a9
2017-01-10 14:11:16 -08:00
*/