在 Java 中,Predicate<T> 是 java.util.function 包下的函数式接口,常用于条件判断 / 断言。它本身不是测试框架里的“断言”,而是返回一个 boolean 的判断逻辑。
下面从 基本用法 → 组合断言 → 实际场景 逐步说明。
import java.util.function.Predicate;
Predicate<Integer> isPositive = x -> x > 0;
System.out.println(isPositive.test(5)); // true
System.out.println(isPositive.test(-1)); // false
核心方法:
test(T t):执行断言,返回 booleanPredicate<Integer> isPositive = x -> x > 0;
Predicate<Integer> isEven = x -> x % 2 == 0;
Predicate<Integer> isPositiveAndEven = isPositive.and(isEven);
System.out.println(isPositiveAndEven.test(4)); // true
System.out.println(isPositiveAndEven.test(3)); // false
Predicate<String> isEmpty = String::isEmpty;
Predicate<String> isNull = s -> s == null;
Predicate<String> isEmptyOrNull = isEmpty.or(isNull);
Predicate<Integer> isAdult = age -> age >= 18;
Predicate<Integer> isNotAdult = isAdult.negate();
List<Integer> list = List.of(1, 2, 3, 4, 5, 6);
Predicate<Integer> greaterThan3 = x -> x > 3;
list.stream()
.filter(greaterThan3)
.forEach(System.out::println);
输出:
4
5
6
public static void check(int value, Predicate<Integer> rule) {
if (!rule.test(value)) {
throw new IllegalArgumentException("校验失败");
}
}
// 使用
check(10, x -> x > 0);
check(-1, x -> x > 0); // 抛异常
Optional<String> opt = Optional.of("hello");
opt.filter(s -> s.length() > 3)
.ifPresent(System.out::println);
如果你说的“断言”是指 测试失败就报错,可以这样:
Predicate<Boolean> assertTrue = b -> b;
if (!assertTrue.test(1 == 2)) {
throw new AssertionError("断言失败");
}
或者直接用 JUnit:
assertTrue(predicate.test(value));
| 用法 | 说明 |
|---|---|
test() |
执行断言 |
and() |
多条件同时满足 |
or() |
满足其一 |
negate() |
取反 |
| Stream / Optional | 常用过滤场景 |
如果你有具体场景(如:参数校验、规则引擎、单元测试),我可以给你更贴合的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。