检查超类是否是java.lang.Object

时间:2010-05-31 21:41:11

标签: java reflection

我用

if (clazz.getSuperclass().getName() == "java.lang.Object")

有更好的方法吗?

2 个答案:

答案 0 :(得分:9)

if ( clazz.getSuperclass( ) == Object.class )

原始实施有两个问题:

  1. getSuperclass可能会返回null,当您调用getName
  2. 时会获得NPE
  3. 您使用字符串相等(==而不是equals)。奇怪的是,它可能适用于这种情况,因为"java.lang.Object"字符串可能已内化。

答案 1 :(得分:3)

怎么样

if (clazz.getSuperclass().equals(java.lang.Object.class))