Predicate in Java

后端 未结 4 545
生来不讨喜
生来不讨喜 2020-11-28 00:52

I am going through the code which uses Predicate in Java. I have never used Predicate. Can someone guide me to any tutorial or conceptual explanati

4条回答
  •  迷失自我
    2020-11-28 01:33

    A predicate is a function that returns a true/false (i.e. boolean) value, as opposed to a proposition which is a true/false (i.e. boolean) value. In Java, one cannot have standalone functions, and so one creates a predicate by creating an interface for an object that represents a predicate and then one provides a class that implements that interface. An example of an interface for a predicate might be:

    public interface Predicate
    {
        public boolean evaluate(ARGTYPE arg);
    }
    

    And then you might have an implementation such as:

    public class Tautology implements Predicate
    {
         public boolean evaluate(E arg){
             return true;
         }
    }
    

    To get a better conceptual understanding, you might want to read about first-order logic.

    Edit
    There is a standard Predicate interface (java.util.function.Predicate) defined in the Java API as of Java 8. Prior to Java 8, you may find it convenient to reuse the com.google.common.base.Predicate interface from Guava.

    Also, note that as of Java 8, it is much simpler to write predicates by using lambdas. For example, in Java 8 and higher, one can pass p -> true to a function instead of defining a named Tautology subclass like the above.

提交回复
热议问题