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 int} input value matches some criteria. This is the
31 * {@code int}-consuming primitive type specialization of {@link Predicate}.
32 *
33 * @see Predicate
34 * @since 1.8
35 */
36 @FunctionalInterface
37 public interface IntPredicate {
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(int 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 * @throws NullPointerException if p is null
62 */
63 default IntPredicate and(IntPredicate p) {
64 Objects.requireNonNull(p);
65 return (value) -> test(value) && p.test(value);
66 }
67
68 /**
69 * Returns a predicate which negates the result of this predicate.
70 *
71 * @return a new predicate who's result is always the opposite of this
72 * predicate
73 */
74 default IntPredicate negate() {
75 return (value) -> !test(value);
76 }
77
78 /**
79 * Returns a predicate which evaluates to {@code true} if either this
80 * predicate or the provided predicate evaluates to {@code true}. If this
81 * predicate returns {@code true} then the remaining predicate is not
82 * evaluated.
83 *
84 * <p>Any exceptions thrown by either {@code test} method are relayed
85 * to the caller; if performing first operation throws an exception, the
86 * second operation will not be performed.
87 *
88 * @param p a predicate which will be logically-ORed with this predicate
89 * @return a new predicate which returns {@code true} if either predicate
90 * returns {@code true}
91 * @throws NullPointerException if p is null
92 */
93 default IntPredicate or(IntPredicate p) {
94 Objects.requireNonNull(p);
95 return (value) -> test(value) || p.test(value);
96 }
97 }
|
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 int}-valued
31 * argument. This is the {@code int}-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(int)}.
36 *
37 * @see Predicate
38 * @since 1.8
39 */
40 @FunctionalInterface
41 public interface IntPredicate {
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(int 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 IntPredicate and(IntPredicate 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 IntPredicate 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 IntPredicate or(IntPredicate other) {
101 Objects.requireNonNull(other);
102 return (value) -> test(value) || other.test(value);
103 }
104 }
|