22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25 package java.util.function;
26
27 import java.util.Objects;
28
29 /**
30 * Determines if the {@code long} input value matches some criteria. This is the
31 * {@code long}-consuming primitive type specialization of {@link Predicate}.
32 *
33 * @see Predicate
34 * @since 1.8
35 */
36 @FunctionalInterface
37 public interface LongPredicate {
38
39 /**
40 * Returns {@code true} if the input value matches some criteria.
41 *
42 * @param value the value to be tested.
43 * @return {@code true} if the input value matches some criteria, otherwise
44 * {@code false}.
45 */
46 public boolean test(long value);
47
48 /**
49 * Returns a predicate which evaluates to {@code true} only if this
50 * predicate and the provided predicate both evaluate to {@code true}. If
51 * this predicate returns {@code false} then the remaining predicate is not
52 * evaluated.
53 *
54 * @param p a predicate which will be logically-ANDed with this predicate.
55 * @return a new predicate which returns {@code true} only if both
56 * predicates return {@code true}.
57 */
58 public default LongPredicate and(LongPredicate p) {
59 Objects.requireNonNull(p);
60 return (value) -> test(value) && p.test(value);
61 }
62
63 /**
64 * Returns a predicate which negates the result of this predicate.
65 *
66 * @return a new predicate who's result is always the opposite of this
67 * predicate.
68 */
69 public default LongPredicate negate() {
70 return (value) -> !test(value);
71 }
72
73 /**
74 * Returns a predicate which evaluates to {@code true} if either this
75 * predicate or the provided predicate evaluates to {@code true}. If this
76 * predicate returns {@code true} then the remaining predicate is not
77 * evaluated.
78 *
79 * @param p a predicate which will be logically-ORed with this predicate.
80 * @return a new predicate which returns {@code true} if either predicate
81 * returns {@code true}.
82 */
83 public default LongPredicate or(LongPredicate p) {
84 Objects.requireNonNull(p);
85 return (value) -> test(value) || p.test(value);
86 }
87
88 /**
89 * Returns a predicate that evaluates to {@code true} if both or neither of
90 * the component predicates evaluate to {@code true}.
91 *
92 * @param p a predicate which will be logically-XORed with this predicate.
93 * @return a predicate that evaluates to {@code true} if both or neither of
94 * the component predicates evaluate to {@code true}.
95 */
96 public default LongPredicate xor(LongPredicate p) {
97 Objects.requireNonNull(p);
98 return (value) -> test(value) ^ p.test(value);
99 }
100 }
|
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25 package java.util.function;
26
27 import java.util.Objects;
28
29 /**
30 * Determines if the {@code long} input value matches some criteria. This is the
31 * {@code long}-consuming primitive type specialization of {@link Predicate}.
32 *
33 * @see Predicate
34 * @since 1.8
35 */
36 @FunctionalInterface
37 public interface LongPredicate {
38
39 /**
40 * Returns {@code true} if the input value matches some criteria.
41 *
42 * @param value the value to be tested
43 * @return {@code true} if the input value matches some criteria, otherwise
44 * {@code false}
45 */
46 boolean test(long value);
47
48 /**
49 * Returns a predicate which evaluates to {@code true} only if this
50 * predicate and the provided predicate both evaluate to {@code true}. If
51 * this predicate returns {@code false} then the remaining predicate is not
52 * evaluated.
53 *
54 * @param p a predicate which will be logically-ANDed with this predicate
55 * @return a new predicate which returns {@code true} only if both
56 * predicates return {@code true}
57 */
58 default LongPredicate and(LongPredicate p) {
59 Objects.requireNonNull(p);
60 return (value) -> test(value) && p.test(value);
61 }
62
63 /**
64 * Returns a predicate which negates the result of this predicate.
65 *
66 * @return a new predicate who's result is always the opposite of this
67 * predicate
68 */
69 default LongPredicate negate() {
70 return (value) -> !test(value);
71 }
72
73 /**
74 * Returns a predicate which evaluates to {@code true} if either this
75 * predicate or the provided predicate evaluates to {@code true}. If this
76 * predicate returns {@code true} then the remaining predicate is not
77 * evaluated.
78 *
79 * @param p a predicate which will be logically-ORed with this predicate
80 * @return a new predicate which returns {@code true} if either predicate
81 * returns {@code true}
82 * @throws NullPointerException if p is null
83 */
84 default LongPredicate or(LongPredicate p) {
85 Objects.requireNonNull(p);
86 return (value) -> test(value) || p.test(value);
87 }
88 }
|