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

137
Visualizações
Predicados vs sentencias if

He visto en algunos proyectos que las personas usan Predicate s en lugar de sentencias if puras, como se ilustra con un ejemplo simple a continuación:

 int i = 5; // Option 1 if (i == 5) { // Do something System.out.println("if statement"); } // Option 2 Predicate<Integer> predicate = integer -> integer == 5; if (predicate.test(i)) { // Do something System.out.println("predicate"); }

¿Cuál es el punto de preferir Predicate s sobre declaraciones if?

about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

El uso de un predicado hace que su código sea más flexible.

En lugar de escribir una condición que siempre verifique si i == 5 , puede escribir una condición que evalúe un Predicate , lo que le permite pasar diferentes Predicate implementando diferentes condiciones.

Por ejemplo, el Predicate se puede pasar como argumento a un método:

 public void someMethod (Predicate<Integer> predicate) { if(predicate.test(i)) { // do something System.out.println("predicate"); } ... }

Así es como funciona el método de filter de Stream .

about 4 years ago · Santiago Trujillo Relatório

0

Para el ejemplo exacto que proporcionó, usar un Predicado es una gran exageración. El compilador y luego el tiempo de ejecución crearán:

  1. un método (predicado sin azúcar)
  2. una .class que implementará java.util.Predicate
  3. una instancia de la clase creada en 2

todo esto frente a una declaración if simple.

Y todo esto por un Predicado apátrida . Si su predicado tiene estado, como:

 Predicate<Integer> p = (Integer j) -> this.isJGood(j); // you are capturing "this"

luego, cada vez que use este Predicado, se creará una nueva instancia (al menos bajo la JVM actual).

En mi opinión, la única opción viable para crear un Predicado de este tipo es, por supuesto, reutilizarlo en varios lugares (como pasar como argumentos a los métodos).

about 4 years ago · Santiago Trujillo Relatório

0

El uso de declaraciones if es la mejor (léase: la más eficaz) forma de comprobar las condiciones binarias.

La declaración de cambio puede ser más rápida para situaciones más complejas.

Un Predicate es una forma especial de Function . De hecho, el arquitecto del lenguaje Java trabaja en una forma de permitir tipos primitivos genéricos. Esto hará que Predicate<T> sea aproximadamente equivalente a Function<T, boolean> (módulo el nombre del método test vs apply).

Si una función (resp. método) toma una o más funciones como argumento(s), la llamamos función de orden superior . Decimos que estamos pasando comportamiento a una función. Esto nos permite crear potentes API.

 String result = Match(arg).of( Case(isIn("-h", "--help"), help()), Case(isIn("-v", "--version"), version()), Case($(), cmd -> "unknown command: " + cmd) );

Este ejemplo está tomado de Javaslang , una biblioteca para la programación funcional de objetos en Java 8+.

Descargo de responsabilidad: soy el creador de Javaslang.

about 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
Recomende algumas ofertas para mim
Preciso de ajuda