2011-07-07 8 views
0

最上位のクラスにメソッドprintKlass()を作成して、それを継承し、getClass().getSimpleName()の値を含む最上位の変数KLASSを出力します。継承されたメソッドを使用して継承階層の各レベルでSimpleClassNameを表示する方法はありますか?

したがって、クラスAの場合、printKlassメソッドはAと記述する必要があります。

クラスBはBを出力します。

コンパイラでは、パートクラスのgetClassメソッドにアクセスすることはできません。staticコンテキストでは、thisは利用できません。

どうすればこの問題を回避できますか? フィールドとして

public class A 
{ 
    protected static final String KLASS = this.getClass().getSimpleName(); // "Cannot use 'this' in a static context 

    protected 
    public void printKlass() 
    { 
     System.out.println(KLASS); 
    } 
} 

public class B extends A 
{ 

    //... 

    printKlass(); // Should say "B", not "A" 

    //... 

} 

答えて

2

、それは別のクラスごとに異なる値を持つことはできません。

何が問題なのですか?

public void printKlass() 
{ 
    return System.out.println(getClass().getSimpleName()); 
} 
関連する問題