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