Ver Mensaje Individual
  #5 (permalink)  
Antiguo 09/01/2015, 02:13
Avatar de Profesor_Falken
Profesor_Falken
 
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: For, variable local final

Buenas,

El problema que tiene el compilador es la diferencia de ambitos entre la closure y el metodo que la contiene.

Las variables locales de un metodo se almacenan en una seccion de memoria llamada pila(stack) mientras que la closure se guarda en el heap. El caso es que la closure podria ejecutarse cuando el ambito de la pila haya terminado y la variable no este disponible o bien haya cambiado de valor. Por eso el compilador requiere declararla final, para asegurarse de que estara disponible y sin cambios cuando se utilice internamente.

Encuentro superrebuscado tu algoritmo, pero en cualquier caso se deberia solucionar el error de esta manera:

Código Java:
Ver original
  1. for(int i=0;i<autores.length;i++){
  2.        final String autorBuscado = autores[i];
  3.        refs.entrySet().stream().forEach((cadena) -> {
  4.             Registro valor=cadena.getValue();
  5.             int idFil;
  6.             for(int j=0;j<valor.autores.size();j++){
  7.            if(valor.autores.get(j).equals(autorBuscado )){
  8.                idFil=Arrays.binarySearch(filiaciones,valor.filiaciones.get(j));
  9.            ps3.println((i+1)+","+(idFil+1));}
  10.             }
  11.        });
  12.            }

Un saludo
__________________
If to err is human, then programmers are the most human of us