Can we do a ==
on a Class
variable instead of equals
and expect the same result?
For example:
Class clazz = xyz;
<
Yes.
Take a look at the Class class description and note that it inherits equals
from Object
, for which the method reads:
"The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any non-null reference values x and y, this method returns true if and only if x and y refer to the same object (x == y has the value true)."
Yes, since the code for equals(...)
for class is the following:
public boolean equals(Object obj) {
return (this == obj);
}
Class is final, so its equals() cannot be overridden. Its equals() method is inherited from Object which reads
public boolean equals(Object obj) {
return (this == obj);
}
So yes, they are the same thing for a Class, or any type which doesn't override equals(Object)
To answer your second question, each ClassLoader can only load a class once and will always give you the same Class for a given fully qualified name.