public class COhneEquals
{
protected final String m_message;
public COhneEquals( final String p_message )
{
m_message = p_message;
}
}
public class CMitEquals extends COhneEquals
{
public CMitEquals( final String p_message )
{
super( p_message );
}
// HashCode wird überladen und liefert den Hash-Code des internen Strings
@Override
public int hashCode()
{
return m_message.hashCode();
}
// Equals wird überladen, so dass HashCode aufgerufen wurde
@Override
public boolean equals( final Object p_object )
{
return p_object instanceof CMitEquals && this.hashCode() == p_object.hashCode();
}
}
public final class CAusgabe
{
private CAusgabe()
{
}
public static void main( final String[] p_args )
{
final COhneEquals l_ohne1 = new COhneEquals( "test" );
final COhneEquals l_ohne2 = new COhneEquals( "test" );
final CMitEquals l_mit1 = new CMitEquals( "test" );
final CMitEquals l_mit2 = new CMitEquals( "test" );
System.out.println( "Ohne-1 & Ohne-2 sind " + (
l_ohne1.equals( l_ohne2 )
? "gleich"
: "nicht gleich" )
);
System.out.println( "Mit-1 & Mit-2 sind " + (
l_mit1.equals( l_mit2 )
? "gleich"
: "nicht gleich" )
);
}
}
Ohne-1 & Ohne-2 sind nicht gleich
Mit-1 & Mit-2 sind gleich