Hutool Hutool
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
  • 快速入门

  • 核心(hutool-core)

    • AI(Hutool-ai)

    • 注解(annotation)

    • 数组(array)

    • JavaBean(bean)

    • 缓存(cache)

    • 类加载器(classloader)

    • 编码解码(codec)

    • 集合(collection)

    • 比较器(comparator)

    • 压缩(compress)

    • 类型转换(convert)

    • 数据(data)

    • 日期时间(date)

    • 异常(exception)

    • 函数(func)

      • 简介
      • Lambda工具-LambdaUtil
      • 断言工具-PredicateUtil
        • 介绍
        • 主要功能
          • 1. 创建断言条件
          • 2. 断言条件的反转
          • 3. 断言条件的组合
          • 3.1 与条件(AND)
          • 3.2 或条件(OR)
          • 3.3 无条件(NONE)
          • 4. 断言条件的强制转换
          • 5. 复杂断言条件的组合
        • 适用场景
    • IO流(io)

    • 语言特性(lang)

    • Map(map)

    • 数字数学(math)

    • 网络(net)

    • 对象池(pool)

    • 反射(reflect)

    • 正则(regex)

    • 服务提供(spi)

    • 聚合操作(stream)

    • 字符串文本(text)

    • 并发和线程(thread)

    • 树结构(tree)

    • 工具集合(util)

    • XML操作(xml)

  • 定时任务(hutool-cron)

  • 加密(hutool-crypto)

  • 数据库(hutool-db)

  • 扩展(hutool-extra)

  • HTTP(hutool-http)

  • 日志(hutool-log)

  • 配置文件(hutool-setting)

  • JSON(hutool-json)

  • Office办公(hutool-poi)

  • 套接字(hutool-socket)

  • GUI(hutool-swing)

  • 指南
  • 核心(hutool-core)
  • 函数(func)
Hutool
2026-01-03
目录

断言工具-PredicateUtil

# 介绍

PredicateUtil是Hutool中用于处理Predicate接口的工具类,提供了丰富的Predicate操作方法,包括条件的组合、反转、强制转换等功能,简化了断言条件的编程。

# 主要功能

# 1. 创建断言条件

// 创建一个总是返回true的断言条件
Predicate<String> alwaysTrue = PredicateUtil.alwaysTrue();
boolean result = alwaysTrue.test("任何值"); // true

# 2. 断言条件的反转

// 创建一个判断字符串不为空的断言
Predicate<String> notEmpty = String::isEmpty;

// 反转断言条件,变为判断字符串为空
Predicate<String> isEmpty = PredicateUtil.negate(notEmpty);
boolean result1 = isEmpty.test(""); // true
boolean result2 = isEmpty.test("test"); // false

# 3. 断言条件的组合

# 3.1 与条件(AND)

// 创建两个断言条件
Predicate<String> notEmpty = str -> str != null && !str.isEmpty();
Predicate<String> lengthGt5 = str -> str.length() > 5;

// 组合为与条件:字符串不为空且长度大于5
Predicate<String> andPredicate = PredicateUtil.and(notEmpty, lengthGt5);

boolean result1 = andPredicate.test("test"); // false,长度小于5
boolean result2 = andPredicate.test("test123"); // true,满足所有条件

# 3.2 或条件(OR)

// 创建两个断言条件
Predicate<Integer> isPositive = num -> num > 0;
Predicate<Integer> isEven = num -> num % 2 == 0;

// 组合为或条件:数字为正数或偶数
Predicate<Integer> orPredicate = PredicateUtil.or(isPositive, isEven);

boolean result1 = orPredicate.test(-2); // true,是偶数
boolean result2 = orPredicate.test(3); // true,是正数
boolean result3 = orPredicate.test(-1); // false,既不是正数也不是偶数

# 3.3 无条件(NONE)

// 创建两个断言条件
Predicate<Integer> isPositive = num -> num > 0;
Predicate<Integer> isEven = num -> num % 2 == 0;

// 组合为无条件:数字既不是正数也不是偶数
Predicate<Integer> nonePredicate = PredicateUtil.none(isPositive, isEven);

boolean result1 = nonePredicate.test(-2); // false,是偶数
boolean result2 = nonePredicate.test(3); // false,是正数
boolean result3 = nonePredicate.test(-1); // true,既不是正数也不是偶数

# 4. 断言条件的强制转换

// 创建一个父类类型的断言
Predicate<CharSequence> charSequencePredicate = cs -> cs.length() > 0;

// 强制转换为子类类型的断言
Predicate<String> stringPredicate = PredicateUtil.coerce(charSequencePredicate);

boolean result = stringPredicate.test("test"); // true

# 5. 复杂断言条件的组合

// 创建多个断言条件
Predicate<Integer> isPositive = num -> num > 0;
Predicate<Integer> isEven = num -> num % 2 == 0;
Predicate<Integer> lessThan100 = num -> num < 100;

// 组合多个条件:正数且是偶数且小于100
Predicate<Integer> complexPredicate = PredicateUtil.and(isPositive, isEven, lessThan100);

boolean result1 = complexPredicate.test(50); // true,满足所有条件
boolean result2 = complexPredicate.test(150); // false,大于100
boolean result3 = complexPredicate.test(-2); // false,不是正数

# 适用场景

PredicateUtil适用于以下场景:

  • 需要组合多个断言条件时
  • 需要反转断言条件时
  • 需要创建总是为true的断言时
  • 需要在不同类型的断言之间转换时
  • 需要使用函数式编程风格处理条件判断时
  • 需要简化复杂条件表达式时

通过PredicateUtil,开发者可以更加便捷地处理断言条件,编写更简洁、更易维护的函数式代码,同时享受到断言条件组合带来的灵活性。

Lambda工具-LambdaUtil
简介

← Lambda工具-LambdaUtil 简介→

Theme by Vdoing | Copyright © 2025-2026 Hutool | Apache-2.0
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式