Java Reference
In-Depth Information
1 class BaseClass
2 {
3 public BaseClass( int i )
4 { x = i; }
5
6 public boolean equals( Object rhs )
7 {
8 // This is the wrong test (ok if final class)
9 if( !( rhs instanceof BaseClass ) )
10 return false;
11
12 return x == ( (BaseClass) rhs ).x;
13 }
14
15 private int x;
16 }
17
18 class DerivedClass extends BaseClass
19 {
20 public DerivedClass( int i, int j )
21 {
22 super( i );
23 y = j;
24 }
25
26 public boolean equals( Object rhs )
27 {
28 // This is the wrong test.
29 if( !( rhs instanceof DerivedClass ) )
30 return false;
31
32 return super.equals( rhs ) &&
33 y == ( (DerivedClass) rhs ).y;
34 }
35
36 private int y;
37 }
38
39 public class EqualsWithInheritance
40 {
41 public static void main( String [ ] args )
42 {
43 BaseClass a = new BaseClass( 5 );
44 DerivedClass b = new DerivedClass( 5, 8 );
45 DerivedClass c = new DerivedClass( 5, 8 );
46
47 System.out.println( "b.equals(c): " + b.equals( c ) );
48 System.out.println( "a.equals(b): " + a.equals( b ) );
49 System.out.println( "b.equals(a): " + b.equals( a ) );
50 }
51 }
figure 6.33
An illustration of a
broken implementation
of equals
Search WWH ::




Custom Search