que - ¿Qué son los campos sintéticos en Java?
java awt componentes (1)
Esta pregunta ya tiene una respuesta aquí:
- ¿Cuál es el significado de "sintético estático"? 3 respuestas
¿Alguien puede explicar de una manera fácil de entender la importancia de los campos sintéticos en Java? Recuerdo haberlo leído en el contexto de clases internas no estáticas donde cada instancia de clase interna mantiene una referencia a la clase adjunta. ¿Por qué tales referencias / campos se llaman campos sintéticos?
Un campo sintético es un campo creado por el compilador que vincula una clase interna local a la variable local o parámetro de tipo de referencia de un bloque. El compilador sintetiza ciertos campos y métodos ocultos para implementar el alcance de los nombres. Estos campos son privados a menos que se indique lo contrario, o son como máximo del alcance del paquete. Puede obtener más información aquí y en JLS
Un miembro de la clase que no aparece en el código fuente debe marcarse usando un atributo sintético, o bien debe tener su indicador ACC_SYNTHETIC establecido. Las únicas excepciones a este requisito son los métodos generados por el compilador que no se consideran artefactos de implementación, es decir, el método de inicialización de instancia que representa un constructor predeterminado del lenguaje de programación Java (§2.9), el método de inicialización de clase (§2.9) y el Enum. los métodos values () y Enum.valueOf () ..