2010-05-31 67 views

回答

9

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

有2個問題,你原來的實現:

  1. getSuperclass可能會返回null,你會得到NPE,當你調用的getName
  2. 您可以使用身份平等的String(==代替equals)。奇怪的是,它可能在這種情況下工作,因爲"java.lang.Object"字符串可能是內部化的。
3

如何

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

這可能拋出NPE如果clazz中是原始或'java.lang.Object'。可能'Object.class.equals(clazz.getSuperclass())'更健壯。另外'java.lang.Class'是可以使用身份比較的類之一。 – 2010-05-31 21:51:20

+0

@亞歷山大,好點,謝謝。我對身份比較並不是很確定,所以我使用了「等號」 - 因此讓自己陷入了另一段腿:-) – 2010-06-01 05:25:27