Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

getSuperclass()について

public class Test{
    public static void main(String[] args) {
        System.out.print(new Test().getClass().getSuperclass());
    }
}
上記を実行すると
class java.lang.Object
と表示されます。
java.lang.Objectの前のclassって何でしょうか?
java.lang.Objectはclassですよって言う意味でしょうか?
だとするとclass以外のものが返ってきたりする場合があるのでしょうか?

5

回答

313

閲覧

5件の回答

評価

0

System.out.print()のソースを見れば追えると思うが。

評価

0

ソースを追ったらこんなのにたどり着きました。
private void write(String s) {
        try {
            synchronized (this) {
                ensureOpen();
                textOut.write(s);
                textOut.flushBuffer();
                charOut.flushBuffer();
                if (autoFlush && (s.indexOf('\n') >= 0))
                    out.flush();
            }
        }
        catch (InterruptedIOException x) {
            Thread.currentThread().interrupt();
        }
        catch (IOException x) {
            trouble = true;
        }
    }
結果解りません。

評価

0

直接呼ばれてるのは、print(Object o)だろう。
そこからwrite(String s)に流れる間に、ObjectをどうやってStringにしているか。

評価

0

Testクラスはどのクラスも継承してないとしたら、Superクラスとして、ルートクラスであるObjectクラスが表示されるのは正しいのでは。

評価

0

聞きたいのは、なんでjava.lang.Objectの前に「class 」という文字列があるのか、他の文字列が出ることもあるのか、という話だからかみ合っていない。

回答する

ログインしていません。

ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 アカウントをお持ちでない方は会員登録を行ってください。

ユーザ名匿名