【发布时间】:2023-03-21 17:10:02
【问题描述】:
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的用法有什么区别?
【问题讨论】:
-
我现在无法测试它,但似乎第三种方法有缺陷:两个类可以在不同的命名空间中具有相同的名称。
-
@JeroenVannevel
getName()方法不返回类的完全限定名吗? -
@RohitJain: appearantly not
-
@JeroenVannevel 该类不在任何包中。你期望它打印什么?
-
@JeroenVannevel:他们确实做到了。 obj.getClass().getName() 返回 com.test.MyClass
标签: java class generics compare