.equals()或==在比较对象的类时

时间:2015-11-01 17:52:37

标签: java conditional equals

在java中,当你测试对象的类是什么时,你会使用.equals()或==

例如,在下面的代码中,它将是:

if(object.getClass() == MyClass.class)

if(object.getClass().equals(MyClass.class))

3 个答案:

答案 0 :(得分:3)

你也可以使用instanceof进行那种比较,无论如何,Class实现不会覆盖equals所以比较使用==是正确的,它将检查运行时类,fe:这段代码将显示为true:

public static void main(String[] args) {

    Object object = "";

    if (object.getClass() == String.class) {
        System.out.println("true");
    }
}

比较对象的一般规则是使用'equals',但是如果你不想使用instanceof来比较类,我认为正确的方法是使用==。

答案 1 :(得分:0)

我个人倾向于将==用于课程,因为我认为它的性能略高一些。但是你必须要知道,如果对象的引用是相同的而不仅仅是内容(例如equals),则返回true。

例如,如果两个实例由不同的ClassLoader加载,那么两个Class实例与==的比较将返回false。

要进行保存,您应该使用equals

答案 2 :(得分:0)

好吧,我建议你阅读J.Bloch的书 Effective Java 作为一项通用规则,除非要明确比较给定实例的指针,否则应始终使用类的.equals()方法。也就是说,您希望比较类表示的内容,例如示例中的实例类,或者例如字符串的内容,而不是指向String对象的指针。