Typical run-of-the-mill Equals method
if (o == null) // caution
return false;
if (o == this) // optimization
return true;
// Castable to this class?
if (!(o instanceof EqualsDemo))
return false;
EqualsDemo other = (EqualsDemo)o; // OK, cast to this class
// compare field-by-field
if (int1 != other.int1) // compare primitives directly
return false;
if (!obj1.equals(other.obj1)) // compare objects using their equals
return false;
return true;