Necesitaba cambiar variables dentro de una clase interna y recibí el infame error "No se puede referir a una variable no final dentro de una clase interna definida en un método diferente".clase interna variable no final java
void onStart(){
bt.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int q = i;
}
});
}
rápidamente me hizo una clase que celebra todas las cosas que quería cambiar e hizo una versión final de la clase fuera de la clase interna
class temp{
int q;
}
void onStart(){
final temp x = new temp();
bt.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
x.q = i;
}
});
}
Esto parece ser lo que necesito y lo funciona, pero me pregunto si esta es la forma correcta de solucionar el problema. Además, realmente odio usar la palabra temp
para nombrar mi clase. ¿Existe un término de programación real para lo que hice para que haga un nombre más descriptivo para mi clase?
Bravo. La otra cosa agradable es que esta clase interna es más extensible y reutilizable. IMO, las clases internas anónimas son casi siempre una mala idea. – user949300
Funcionan bien como clases de estilo de acción única, controladores para eventos específicos en los que las acciones se pueden realizar en función de las entradas. Muy común en la programación de GUI, que es su ejemplo. Excepto en este caso, existe esa interacción entre las clases que complica las cosas. – Robin
¡Esto es lo que estaba buscando! ¡Gracias! –