Como chegar classe no valor do campo usando a reflexão?

Java:

Considere o seguinte código

class Foo {

}

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

É possível em Fooclasse para obter a classe de foocampo. Quer dizer, eu quero em Fooobter Barclasse. A questão é, naturalmente, sobre a reflexão, mas não sobre new Foo(Bar.class).

John Kuhn:

Se você deseja obter os chamadores Class, você pode usar o newish (introduzido no Java 9) StackWalkerAPI:

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

Se você usar uma versão mais antiga Java, há o não suportado sun.reflect.Reflection.getCallerClass().

Acho que você gosta

Origin http://10.200.1.11:23101/article/api/json?id=399214&siteId=1
Recomendado
Clasificación