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

229
Vistas
La implementación de Java Predicate no puede acceder a la variable final global

Creé un servicio de descanso simple usando Java y Springboot. aquí está mi código de capa de servicio

 @Service class MyService { private final TestService service; @Autowired public MyService(final TestService service) { this.service = service; } // here is the issue private final Predicate<User> userPredicate = (user) -> this.service.isValidUser(user); }

En la línea anterior, es posible que el ide que se queja del servicio variable no se inicialice y no puedo usarlo en la implementación del predicado. Intenté eliminar el final del servicio, eso funciona, pero no quiero eliminar el final de la declaración TestService.

¿Alguien tiene alguna solución?

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

0

El orden de ejecución es: primero, todas las expresiones de inicialización se resuelven en orden léxico (de arriba a abajo en el archivo), luego se ejecuta el constructor.

En otras palabras, esa línea userPredicate = se ejecuta antes que this.service = service; línea. Está condenado al fracaso y el compilador lo sabe, por lo que se negará a compilar este código.

La solución es trivial: mueva esa inicialización de userPredicate al constructor:

 private final TestService service; private final Predicate<User> userPredicate; @AutoWired public MyService(TestService service) { this.service = service; this.userPredicate = user -> service.isValidUser(user); }

Por lo que vale, si no necesita el service para nada más que hacer ese userPredicate, también podría deshacerse del campo de service por completo.

over 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