2013-10-09 17 views
1

我正在嘗試使用下面的方法查找對象 - 「字符串」的層次結構。獲取字符串對象的類型 - java

public class test{ 

    public static void main(String[] args){ 
     String x = "Test"; 
     System.out.println(x.getClass().getClass()); 
    } 
}  

第一x.getclass()返回

Output: 

    class java.lang.String 

然後-System.out.println(x.getClass()的getClass());

Output: 
     class java.lang.Class 

和任何產生同樣的結果後

的System.out.println(x.getClass()的getClass()的getClass()的getClass()。);

不應該在某些時候導致 - java.lang.Object?

回答

4

由於您在Class實例上調用getClass(),所以結果是正確的。要獲得父類,應該從代表子類類型的Class實例調用getSuperclass()

String x = "Test"; 
System.out.println(x.getClass().getSuperclass()); 

輸出

class java.lang.Object 
1

x.getClass().getClass()總是返回表示java.lang.Class類對象爲任何非空值x

這是因爲x.getClass()只能返回一個Class對象,你問類對象是什麼類型(很明顯:Class)。

似乎想要嘗試不是x.getClass().getClass()而是x.getClass().getSuperClass()。重複最後一部分最終導致java.lang.Object,如您所料(如果再重複一次,則返回null)。