• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

194
Views
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 3 years ago · Santiago Trujillo
1 answers
Answer question

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 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error