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()null 以外の値を表すクラス オブジェクトを常に返します。java.lang.Classx

これx.getClass()は、オブジェクトのみを返すことができ、そのClassクラスオブジェクトにそれがどのタイプであるかを尋ねているためです(明らかに: )。Class

あなたが試してたいと思うことは、しかしではありませx.getClass().getClass()x.getClass().getSuperClass()。その最後の部分繰り返すと、予想どおり、最終的に につながりjava.lang.Objectます(さらにもう一度繰り返すと、 になりますnull)。

于 2013-10-09T14:54:05.960 に答える