Tengo el siguiente código. Quiero obtener el objeto de clase externo con el que creé el objeto de clase interna inner
. ¿Cómo puedo hacerlo?Obtención del objeto de clase externa desde el objeto de clase interna
public class OuterClass {
public class InnerClass {
private String name = "Peakit";
}
public static void main(String[] args) {
OuterClass outer = new OuterClass();
InnerClass inner = outer.new InnerClass();
// How to get the same outer object which created the inner object back?
OuterClass anotherOuter = ?? ;
if(anotherOuter == outer) {
System.out.println("Was able to reach out to the outer object via inner !!");
} else {
System.out.println("No luck :-(");
}
}
}
EDIT: Bueno, algunos de ustedes sugirió la modificación de la clase interna mediante la adición de un método:
public OuterClass outer() {
return OuterClass.this;
}
Pero lo que si no tengo el control de modificar la clase interna, luego (solo para confirmar) ¿tenemos alguna otra forma de obtener el objeto de clase externo correspondiente del objeto de clase interna?
Gracias Jon! Pero, ¿qué pasa si no tengo control para modificar la clase interna (verifique mi edición). – peakit
@peakit: Entonces, que yo sepa, no tienes suerte a menos que uses el reflejo. Sin embargo, se siente como si fuera una violación de la encapsulación; si la clase interna no quiere decirle cuál es su instancia externa, debe respetar eso e intentar diseñarlo de forma tal que no lo necesite. –
¿Esto todavía es válido en Java 8? – misty