在java中,当你测试对象的类是什么时,你会使用.equals()或==
例如,在下面的代码中,它将是:
if(object.getClass() == MyClass.class)
或
if(object.getClass().equals(MyClass.class))
答案 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
对象的指针。