Java:
Considere el siguiente código
class Foo {
}
class Bar {
private Foo foo = new Foo();
}
¿Es posible en Foo
clase para obtener la clase de foo
terreno. Es decir, yo quiero en Foo
conseguir Bar
clase. La pregunta es, por supuesto, sobre la reflexión, pero no sobre new Foo(Bar.class)
.
John Kuhn:
Si desea obtener las llamadas del grupo, puede utilizar la nueva norma (introducido en 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();
}
Si utiliza una versión anterior de Java, está el no soportado sun.reflect.Reflection.getCallerClass()
.