Comparing objects that implement WSObject

On what criteria are objects in WorldServer that implement the WSObject interface compared for equality? Is it safe to assume that calling the inherited java.lang.Object equals method to compare one WSObject to another will always return true if the IDs (the value returned by calling getId) and implementing types are the same?