2012-01-27 12 views
3

IDE(Integrated Development Environment)を使用せずにデバッグする際に、オブジェクトのクラスを決定したいと思います。キャッチは、オブジェクトがインターフェイスとして定義されていることです。このインターフェイスを実装しているオブジェクトのクラスを決定したいと思います。だから、例えば私は、実装クラス名を印刷するには、次のセッターメソッドで文を印刷したいと思います:オブジェクトの実装クラスを印刷する方法

public void setSomeObject(InterfaceType someObject) 
{ 
    m_Object = someObject; 
    System.out.println(someObject.getClass().getName()); 
} 

私はこのコードサンプルをテストするプロセスで午前とこの問題に関する詳細なフィードバックを提供します。 java.lang.Classおよびjava.lang.Object APIのドキュメントごとに、このインターフェースを実装したクラスの代わりにインターフェース名が表示されると思います。

私の質問は、上記のコードサンプルでインターフェイスの代わりに実装されたクラスの名前を印刷する方法ですか?

+0

どのような質問ですか?何が印刷されますか? – amit

+3

なぜあなたはそれを実行し、この記事を書く前に見つけていないのですか?つまり、本当に疑問はありません。 – AHungerArtist

+1

これは問題ではありません。クラスの名前が表示されます。 – smparkes

答えて

1

このステートメントでは、インターフェイスではなく、そのオブジェクトのランタイムクラスを印刷します。ただし、デバッガを使用する場合は、そのSystem.out文は必要ありません。ブレークポイントを配置して、変数をデバッガに表示するだけです。デバッガは、オブジェクトのランタイムクラスが何であるかを表示します

+0

この特定のケースでは、IDE上でコードを実行するのが困難であるため、デバッグステートメントを追加しています。だから私はデバッガを持っていないと仮定してください。 – Vivek

+0

次に、ステートメントをそのまま残しておきます。インターフェイスではなくクラスの名前が表示されるため – Robin

14

私は、このインターフェイスを実装したクラスの代わりにインターフェイス名が印刷されると考えています。

これは正しくありません。getClass().getName()はクラスの名前を表示します。 Javadocは、この上のかなり明確である:

public final Class<?> getClass()

は、このオブジェクトの実行時クラスを返します。

関連する問題