我正在尝试使用以下方法找到Object的层次结构 - “String”。
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 ??
答案 0 :(得分:4)
结果是正确的,因为您正在getClass()
实例上调用Class
。要获取父类,您应该从代表子类类型的getSuperclass()
实例调用Class
。
String x = "Test";
System.out.println(x.getClass().getSuperclass());
输出
class java.lang.Object
答案 1 :(得分:1)
x.getClass().getClass()
将始终为任何非空值x
返回代表java.lang.Class
的类对象。
那是因为x.getClass()
只能返回一个Class
对象而你要求那个类对象是什么类型(显然:Class
)。< / p>
您想要尝试的内容不是x.getClass().getClass()
,而是x.getClass().getSuperClass()
。重复最后一部分将最终导致java.lang.Object
,如您所料(如果再重复一次,则转到null
)。