Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

303
Vistas
¿Cómo funciona realmente Lombok.val?

Lombok.val te permite

use val como el tipo de una declaración de variable local en lugar de escribir el tipo. Cuando haga esto, el tipo se deducirá de la expresión del inicializador. La variable local también será definitiva.

Entonces, en lugar de

 final ArrayList<String> example = new ArrayList<String>();

Puedes escribir

 val example = new ArrayList<String>();

He intentado investigar un poco sobre cómo funciona esto realmente, pero no parece haber una gran cantidad de información. Mirando la página de github , puedo ver que val es un tipo de anotación. A continuación, se utiliza el tipo de anotación, en lugar de una anotación real.

Ni siquiera sabía que podría usar tipos de anotaciones de esta manera, pero al probarlo, el siguiente código es realmente válido. Sin embargo, todavía no estoy seguro de por qué querrías usar el tipo de esta manera.

 public class Main { public @interface Foo { } public static void main(String... args) { Foo bar; System.out.println("End"); } }

¿Cómo procesa Lombok estos usos si no son anotaciones, sino tipos de anotaciones? Según mi entendimiento (obviamente incorrecto), la sintaxis debería parecerse más a:

 @Val foo = new ArrayList<String>();

(Soy consciente de que las restricciones de las anotaciones significan que lo anterior no es una sintaxis válida)

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Para que Lombok funcione, el código fuente debe analizarse sin errores. Por eso, como ya mencionaste, @val foo = new ArrayList<String>(); no funcionaría

Aunque Lombok usa anotaciones y un procesador de anotaciones, el procesador de anotaciones solo se usa como un medio para que el compilador se involucre.

Lombok no tiene un procesador registrado para @val . En su lugar, procesa todos los archivos java, visita todo el AST y reemplaza val por el tipo de expresión de inicialización de las variables locales.

Para el reemplazo real, para Eclipse/ecj vea esta clase y esta . Para javac, consulte esta clase .

Divulgación: soy un desarrollador de Lombok.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda