Java equals for a Class. Is == same as .equals

后端 未结 3 689
醉话见心
醉话见心 2021-02-01 11:51

Can we do a == on a Class variable instead of equals and expect the same result?

For example:

Class clazz = xyz;
<         


        
相关标签:
3条回答
  • 2021-02-01 12:10

    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)."

    0 讨论(0)
  • 2021-02-01 12:25

    Yes, since the code for equals(...) for class is the following:

    public boolean equals(Object obj) {
        return (this == obj);
    }
    
    0 讨论(0)
  • 2021-02-01 12:35

    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.

    0 讨论(0)
提交回复
热议问题