10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
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 * <p>Any exceptions thrown by either {@code test} method are relayed
55 * to the caller; if performing first operation throws an exception, the
56 * second operation will not be performed.
57 *
58 * @param p a predicate which will be logically-ANDed with this predicate
59 * @return a new predicate which returns {@code true} only if both
60 * predicates return {@code true}
61 */
62 default LongPredicate and(LongPredicate p) {
63 Objects.requireNonNull(p);
64 return (value) -> test(value) && p.test(value);
65 }
66
67 /**
68 * Returns a predicate which negates the result of this predicate.
69 *
70 * @return a new predicate who's result is always the opposite of this
71 * predicate
72 */
73 default LongPredicate negate() {
74 return (value) -> !test(value);
75 }
76
77 /**
78 * Returns a predicate which evaluates to {@code true} if either this
79 * predicate or the provided predicate evaluates to {@code true}. If this
80 * predicate returns {@code true} then the remaining predicate is not
81 * evaluated.
82 *
83 * <p>Any exceptions thrown by either {@code test} method are relayed
84 * to the caller; if performing first operation throws an exception, the
85 * second operation will not be performed.
86 *
87 * @param p a predicate which will be logically-ORed with this predicate
88 * @return a new predicate which returns {@code true} if either predicate
89 * returns {@code true}
90 * @throws NullPointerException if p is null
91 */
92 default LongPredicate or(LongPredicate p) {
93 Objects.requireNonNull(p);
94 return (value) -> test(value) || p.test(value);
95 }
96 }
|
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
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 * Represents a predicate (boolean-valued function) of one {@code long}-valued
31 * argument. This is the {@code long}-consuming primitive type specialization of
32 * {@link Predicate}.
33 *
34 * <p>This is a <a href="package-summary.html">functional interface</a>
35 * whose functional method is {@link #test(long)}.
36 *
37 * @see Predicate
38 * @since 1.8
39 */
40 @FunctionalInterface
41 public interface LongPredicate {
42
43 /**
44 * Evaluates this predicate on the given argument.
45 *
46 * @param value the input argument
47 * @return {@code true} if the input argument matches the predicate,
48 * otherwise {@code false}
49 */
50 boolean test(long value);
51
52 /**
53 * Returns a composed predicate that represents a short-circuiting logical
54 * AND of this predicate and another. When evaluating the composed
55 * predicate, if this predicate is {@code false}, then the {@code other}
56 * predicate is not evaluated.
57 *
58 * <p>Any exceptions thrown during evaluation of either predicate are relayed
59 * to the caller; if evaluation of this predicate throws an exception, the
60 * {@code other} predicate will not be evaluated.
61 *
62 * @param other a predicate that will be logically-ANDed with this
63 * predicate
64 * @return a composed predicate that represents the short-circuiting logical
65 * AND of this predicate and the {@code other} predicate
66 * @throws NullPointerException if other is null
67 */
68 default LongPredicate and(LongPredicate other) {
69 Objects.requireNonNull(other);
70 return (value) -> test(value) && other.test(value);
71 }
72
73 /**
74 * Returns a predicate that represents the logical negation of this
75 * predicate.
76 *
77 * @return a predicate that represents the logical negation of this
78 * predicate
79 */
80 default LongPredicate negate() {
81 return (value) -> !test(value);
82 }
83
84 /**
85 * Returns a composed predicate that represents a short-circuiting logical
86 * OR of this predicate and another. When evaluating the composed
87 * predicate, if this predicate is {@code true}, then the {@code other}
88 * predicate is not evaluated.
89 *
90 * <p>Any exceptions thrown during evaluation of either predicate are relayed
91 * to the caller; if evaluation of this predicate throws an exception, the
92 * {@code other} predicate will not be evaluated.
93 *
94 * @param other a predicate that will be logically-ORed with this
95 * predicate
96 * @return a composed predicate that represents the short-circuiting logical
97 * OR of this predicate and the {@code other} predicate
98 * @throws NullPointerException if other is null
99 */
100 default LongPredicate or(LongPredicate other) {
101 Objects.requireNonNull(other);
102 return (value) -> test(value) || other.test(value);
103 }
104 }
|