Java получить объявление класса для абстрактного класса? - PullRequest
0 голосов
/ 20 февраля 2012

Кто-нибудь знает, как получить объявление / включение класса абстрактного класса в Java?В этом случае я хотел бы получить класс anotherClass из someClass.

Пример:

public class anotherClass extends someClass{
...
}

public abstract class someClass{
...
   this.getClass().getEnclosingClass();
}

Ответы [ 3 ]

4 голосов
/ 20 февраля 2012

Невозможно сделать это без использования отражения

3 голосов
/ 20 февраля 2012

Если вы вызовете this.getClass() в абстрактном классе, он все равно вернет класс фактической реализации. В вашем случае вызов this.getClass() вернет anotherClass, что вам нужно, если я не ошибаюсь.

0 голосов
/ 20 февраля 2012

Если вы хотите избежать решения для рефлексии, вы можете заставить людей самим передать вам несколько любопытных повторяющихся дженериков, например:

class AnotherClass extends SomeClass<AnotherClass> {
    public AnotherClass() {
        super(AnotherClass.class);
    }
}

abstract class SomeClass<T extends SomeClass<T>> {
    final Class<T> enclosing;
    public SomeClass(Class<T> c) {
        enclosing = c;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...