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

unj*_*nj2 4 java reflection

我用

if (clazz.getSuperclass().getName() == "java.lang.Object")
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

Ale*_*yak 9

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

原始实现有2个问题:

  1. getSuperclass可能会返回,null并在调用getName时获得NPE
  2. 您使用String(==而不是equals)使用标识相等性.奇怪的是,它可能在这种情况下起作用,因为"java.lang.Object"字符串可能是内化的.