Как получить класс в поле значения с помощью отражения? - PullRequest
0 голосов
/ 03 апреля 2020

Рассмотрим следующий код

class Foo {

}

class Bar {
    private Foo foo = new Foo();
}

Возможно ли в Foo классе получить класс поля foo. Я имею в виду, я хочу в Foo получить Bar класс. Вопрос, конечно, об отражении, но не о new Foo(Bar.class).

1 Ответ

1 голос
/ 03 апреля 2020

Если вы хотите получить класс вызывающих абонентов, вы можете использовать newi sh (введено в Java 9) StackWalker API:

class Foo {
    private static final StackWalker SW = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE);

    public Foo() {
        Class<?> bar = SW.getCallerClass();
    }
}

class Bar {
    private Foo foo = new Foo();
}

Если вы используйте более старую Java версию, есть неподдерживаемая sun.reflect.Reflection.getCallerClass().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...