1

我正在尝试使用以下方法查找对象的层次结构 - “字符串”。

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

2 回答 2

4

结果是正确的,因为您正在调用getClass()实例Class。要获取父类,您应该getSuperclass()Class代表子类类型的实例中调用。

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

输出

class java.lang.Object
于 2013-10-09T14:53:56.343 回答
1

x.getClass().getClass()始终返回表示任何非空值的java.lang.Class对象x

那是因为x.getClass()只能返回一个Class对象,并且您正在询问该类对象它是什么类型(显然:)Class

似乎想尝试的不是x.getClass().getClass()但是x.getClass().getSuperClass()。如您所料,重复最后一部分最终导致java.lang.Object(并且,如果再重复一次,将导致null)。

于 2013-10-09T14:54:05.960 回答