Instances of java.lang.Class are unique to the ClassLoader that loaded them, but if you have more than one ClassLoader, then each one can load the same class file and maintain a separate java.lang.Class object.
Under normal circumstances, this won't come up; it's rather hard to find yourself in a situation where you have copies of the same class loaded multiple times. But it
does happen -- usually as a misconfiguration or flat-out-error -- in
EJB applications and other situations with distributed/partitioned code.