It depends on what exactly you are doing. Sometimes it is appropriate to use instanceof and sometimes not. For instance, consider a square class that extends a rectangle class. Clearly a square of width 5 should be considered 'equal' to a rectangle of width 5 and height 5, regardless of whether or not they are the same class, in this case instanceof is appropriate. Then consider a "Health Professional" class which has two subclasses, a "Surgeon" and a "Nurse." Suppose equality of health professionals is define by their experience and number of peer reviewed publications. Does that mean a surgeon and a nurse both with ten years of experience and six published papers are equal? Certainly not, the surgeon is far more skilled and likely has ten nurses lining up to suck his dick, so here getClass() would be appropriate. If you are really stuck post what classes you are modelling and I'll have a look.