estoy pasando una interfaz como aplicación anónimo a un objeto diferente como esto:cruce de clase anónima
public interface Interface {
public int convert (int a);
}
public static void main(String[] args) throws IOException, InterruptedException {
final int[] array = {1,6,3,5,7,8,4,0,3};
Interface inter = new Interface() {
public int convert(int a) {
int result = a;
for (int i = 0; i < array.length; i++) {
a=a+array[i];
}
return a;
}
};
SomeObject ty = new SomeObject();
ty.Test(7, inter);
}
public class SomeObject {
public void Test(int number, Interface inter) {
System.out.println(inter.convert(number));
}
}
Mi pregunta es: ¿cómo funciona? ¿Cómo sabe SomeObject
acerca de la matriz que no se pasa directamente al objeto (matriz no es miembro de la clase anónima).
actualización
(lo siento para finales de actualización)
lo vars sobre el miembro o los métodos de los métodos que se utilizan en la clase anónima? que no son finales
Interface inter = new Interface() {
public int convert(int a) {
int result = a + someMemberVar;
for (int i = 0; i < array.length; i++) {
a=a+array[i];
}
return a;
}
};
¿Cuál es el propósito de la línea 'int result = a;'? –