2011-07-07 56 views
0

我想在我的頂級類中創建一個方法printKlass(),該類繼承並打印包含值getClass().getSimpleName()的頂級變量KLASS如何使用繼承的方法在繼承層次結構的每個級別顯示SimpleClassName?

因此,在A類的情況下,printKlass方法應寫入A

而B類應打印B

但編譯器不會讓我訪問零件類中的getClass方法 - 它表示thisstatic上下文中不可用。

我該如何解決這個問題?

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()); 
}