public <T, V> void F1(T p1, V p2) {
//Method 1
if (p1.getClass() == p2.getClass()) {
}
//Method 2
if (p1.getClass().equals(p2.getClass())) {
}
//Method 3
if (p1.getClass().getName().equals(p2.getClass().getName())) {
}
}
我想比较参数的类,
哪种方法更安全,或者3种用法有什么不同?
这三种方法都将完成相同的任务。但理想情况下,您应该采用第一种方法。实际上,由于Class
不覆盖equals()
方法,因此无论如何都会调用Object#equals()
方法。对于每个特定的类,每个类加载器也只有一个类实例,这也很有意义。因此,使用它们进行比较==
会很好。
另外,我认为如果p1
和p2
对应于由不同的类加载器加载的同一个类,则前两个条件为false
,而最后一个条件为true
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句