BohYoh.comトップページへ
Java FAQ
目次

オブジェクトのクラス名を調べるにはどうすればよいですか。

 オブジェクトのクラス名は、オブジェクトに対してgetClassメソッドを呼び出してクラスを取得することによって調べられます。以下に示すのが、プログラム例です。
変数xはclass Aです。
変数yはclass Bです。

// オブジェクトのクラス名を表示 class A { } class B { } class TestGetClass { public static void main(String[] args) { A x = new A(); B y = new B(); System.out.println("変数xは" + x.getClass() + "です。"); System.out.println("変数yは" + y.getClass() + "です。"); } }

 この手法が、あらゆるクラス型に対して有効である理由は、以下のとおりです。
 Object#getClassメソッドが返却するのは実行時クラスのClassオブジェクト(すなわちClass型のインスタンス)です。そのため、式x.getClass()y.getClass()を評価して得られるのは、返却されたオブジェクトへの参照値であって、クラス名ではありません。
 もっとも、文字列リテラル"変数xは"と、式x.getClass()とが+演算子で連結される際に、文字列ではないx.getClass()に対してtoStringメソッドが自動的に適用されて、文字列へと変換されます。Class#tostringメソッドが返却する文字列は、以下のものが順に並んだ文字列です。  本プログラムの場合、変換後の文字列は"class A"あるいは"class B"となります。
 文字列を連結することなく、クラス名を表す文字列が必要な場合は、toStringメソッドを明示的に呼び出す必要があります。たとえば、x.getClass().toString()あるいはy.getClass().toString()としなければなりません。


戻る

BohYoh.comロゴ