¿Cómo accedo a un campo de una clase externa, dada una referencia a un objeto de la clase interna?Acceso al campo de la clase externa
class Outer
{
int field;
class Inner
{
void method(Inner parameter)
{
// working on the current instance is easy :)
field = 0;
Outer.this.field = 1;
// working on another instance is hard :(
parameter.field = 2; // does not compile
parameter.Outer.this.field = 3; // does not compile
parameter.outer().field = 4; // This works...
}
// ...but I really don't want to have to write this method!
Outer outer()
{
return Outer.this;
}
}
}
También probé Outer.parameter.field
y muchas otras variantes. ¿Hay una sintaxis que haga lo que quiero?
no es el propósito de una clase interna que ha utilizado justo dentro de su clase externa? – Heisenbug
Creo que esa es la manera de hacerlo. Si siente que está mal, ¿puede pensar en refactorizar o construir esas clases de manera diferente? – Luciano
No conozco otra forma de hacerlo, pero diré que si tienes que hacer contorsiones como esa, generalmente significa que debes reconsiderar el diseño. –