Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

250
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Assistente virtual