La bandera de variable local definida en un ámbito adjunto debe ser final o efectivamente final

Local Variable Flag Defined An Enclosing Scope Must Be Final

Java8 usa variables locales en expresiones lambda para solicitar: La marca de variable local definida en un ámbito adjunto debe ser final o efectivamente final

Esto se debe a que las variables locales que usa se asignan a esta variable después de la inicialización. Luego de la asignación, se considerará que la variable no es definitiva, por lo que se reporta el error. Hay varias soluciones a este problema.



Ley uno:



|_+_|

La variable local que desea usar se asigna a una nueva variable antes de su uso, por lo que java8 pensará que la nueva variable es final, no hay cambios, puede usarla.



Ley 2:

|_+_|

Coloque los valores que necesita en una matriz y utilícelos.

También se puede poner en el mapa o en la lista.