Red de conocimientos turísticos - Conocimientos sobre calendario chino - Por qué las variables locales en los métodos llamados por clases internas anónimas deben ser
Por qué las variables locales en los métodos llamados por clases internas anónimas deben ser
Una vez compilado el código fuente, también se generará una clase anónima local (generalmente generada en forma de A $ 1.class). Por lo tanto, el archivo binario no tiene nada que ver con la clase circundante (A.class), es decir, no puede conocer los métodos de las variables de clase A, pero A$1.class de hecho puede acceder al valor de la variable local del método correspondiente de clase A. ¿Qué hacer? Por lo tanto, solo necesitamos exigir "las variables locales en el método llamado por la clase interna anónima deben ser finales", para que A$1.class pueda acceder directamente a las variables locales del método en la clase A como una constante
Este es un problema de diseño del compilador. Si sabes cómo se compila Java, no es difícil entender cómo funciona.
Este es un problema de diseño del compilador.
En primer lugar, al compilar la clase interna, se generará un archivo .class separado para la clase interna, que no está en el mismo archivo de clase que la clase externa.