Как отобразить SimpleClassName на каждом уровне иерархии наследования, используя метод, который наследуется? - PullRequest
0 голосов
/ 07 июля 2011

Я хочу создать метод printKlass() в моем классе верхнего уровня, который наследуется и печатает переменную верхнего уровня KLASS, содержащую значение getClass().getSimpleName().

Итак, в случаекласса A метод printKlass должен написать A.

, а класс B должен вывести B.

Но компилятор не позволит мне получить доступ к методу getClassв классе детали - он говорит, что this недоступен в контексте static.

Как мне обойти это?

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"

    //...

}

1 Ответ

2 голосов
/ 07 июля 2011

Как поле static , оно не может иметь разные значения для разных классов.

Что не так с этим?

public void printKlass()
{
    return System.out.println(getClass().getSimpleName());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...