Class Assert

java.lang.Object
cn.dinodev.spring.commons.utils.Assert

public class Assert extends Object
Author:
Cody Lu
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    doesNotContain(String textToSearch, String substring, Status status)
    断言给定的文本不包含给定的子字符串。
    static void
    doesNotContain(String textToSearch, String substring, String message)
    断言给定的文本不包含给定的子字符串。
    static void
    doesNotContain(String textToSearch, String substring, Supplier<Status> statusSupplier)
    断言给定的文本不包含给定的子字符串。
    static void
    hasLength(CharSequence text, Status status)
    断言给定的字符串不为空;即,它不能为 null 且不能是空字符串。
    static void
    hasLength(CharSequence text, String message)
    断言给定的字符串不为空;即,它不能为 null 且不能是空字符串。
    static void
    hasLength(CharSequence text, Supplier<Status> statusSupplier)
    断言给定的字符串不为空;即,它不能为 null 且不能是空字符串。
    static void
    hasText(CharSequence text, Status status)
    断言给定的字符串包含有效的文本内容;即,它不能为 null 并且必须包含至少一个非空白字符。
    static void
    hasText(CharSequence text, String message)
    断言给定的字符串包含有效的文本内容;即,它不能为 null 并且必须包含至少一个非空白字符。
    static void
    hasText(CharSequence text, Supplier<Status> statusSupplier)
    断言给定的字符串包含有效的文本内容;即,它不能为 null 并且必须包含至少一个非空白字符。
    static void
    isAssignable(Class<?> superType, Class<?> subType, Status status)
    断言 superType.isAssignableFrom(subType)true
    static void
    isAssignable(Class<?> superType, Class<?> subType, String message)
    断言 superType.isAssignableFrom(subType)true
    static void
    isAssignable(Class<?> superType, Class<?> subType, Supplier<Status> statusSupplier)
    断言 superType.isAssignableFrom(subType)true
    static void
    isInstanceOf(Class<?> type, Object obj, Status status)
    断言提供的对象是提供的类的实例。
    static void
    isInstanceOf(Class<?> type, Object obj, String message)
    断言提供的对象是提供的类的实例。
    static void
    isInstanceOf(Class<?> type, Object obj, Supplier<Status> statusSupplier)
    断言提供的对象是提供的类的实例。
    static void
    isNull(Object object, Status status)
    断言对象为 null
    static void
    isNull(Object object, String message)
    断言对象为 null
    static void
    isNull(Object object, Supplier<Status> statusSupplier)
    断言对象为 null
    static void
    isTrue(boolean expression, Status status)
    断言一个布尔表达式,如果表达式为 false,则抛出 BusinessException
    static void
    isTrue(boolean expression, String message)
    断言一个布尔表达式,如果表达式为 false,则抛出 BusinessException
    static void
    isTrue(boolean expression, Supplier<Status> statusSupplier)
    断言一个布尔表达式,如果表达式为 false,则抛出 BusinessException
    static void
    noNullElements(Object[] array, Status status)
    断言数组不包含 null 元素。
    static void
    noNullElements(Object[] array, String message)
    断言数组不包含 null 元素。
    static void
    noNullElements(Object[] array, Supplier<Status> statusSupplier)
    断言数组不包含 null 元素。
    static void
    noNullElements(Collection<?> collection, Status status)
    断言集合不包含 null 元素。
    static void
    noNullElements(Collection<?> collection, String message)
    断言集合不包含 null 元素。
    static void
    noNullElements(Collection<?> collection, String message, Object... msgArgs)
    断言集合不包含 null 元素。
    static void
    noNullElements(Collection<?> collection, Supplier<Status> statusSupplier)
    断言集合不包含 null 元素。
    static void
    notEmpty(Object[] array, Status status)
    断言数组包含元素;即,它不能为 null 并且必须包含至少一个元素。
    static void
    notEmpty(Object[] array, String message)
    断言数组包含元素;即,它不能为 null 并且必须包含至少一个元素。
    static void
    notEmpty(Object[] array, Supplier<Status> statusSupplier)
    断言数组包含元素;即,它不能为 null 并且必须包含至少一个元素。
    static void
    notEmpty(Collection<?> collection, Status status)
    断言集合包含元素;即,它不能为 null 并且必须包含至少一个元素。
    static void
    notEmpty(Collection<?> collection, String message)
    断言集合包含元素;即,它不能为 null 并且必须包含至少一个元素。
    static void
    notEmpty(Collection<?> collection, Supplier<Status> statusSupplier)
    断言集合包含元素;即,它不能为 null 并且必须包含至少一个元素。
    static void
    notEmpty(Map<?,?> map, Status status)
    断言 Map 包含条目;即,它不能为 null 并且必须包含至少一个条目。
    static void
    notEmpty(Map<?,?> map, String message)
    断言 Map 包含条目;即,它不能为 null 并且必须包含至少一个条目。
    static void
    notEmpty(Map<?,?> map, String message, Object... msgArgs)
    断言 Map 包含条目,并允许传递格式化消息参数。
    static void
    notEmpty(Map<?,?> map, Supplier<Status> statusSupplier)
    断言 Map 包含条目;即,它不能为 null 并且必须包含至少一个条目。
    static void
    notNull(Object object, Status status)
    断言对象不为 null
    static void
    notNull(Object object, String message, Object... msgArgs)
    断言对象不为 null,并允许传递格式化消息参数。
    static void
    notNull(Object object, Supplier<Status> statusSupplier)
    断言对象不为 null
    static void
    state(boolean expression, String message, Object... args)
    断言一个布尔表达式,如果表达式为 false,则抛出 IllegalStateException
    static void
    state(boolean expression, Supplier<String> messageSupplier)
    断言一个布尔表达式,如果表达式为 false,则抛出 IllegalStateException

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • Assert

      public Assert()
  • Method Details

    • state

      public static void state(boolean expression, String message, Object... args)
      断言一个布尔表达式,如果表达式为 false,则抛出 IllegalStateException

      如果希望在断言失败时抛出 IllegalArgumentException,请调用 isTrue(boolean, java.lang.String)

      Assert.state(id == null, "The id property must not already be initialized");
      Parameters:
      expression - 布尔表达式
      message - 断言失败时使用的异常消息模式。模式与 SLF4J 相同
      args - 要替换格式锚点的参数
      Throws:
      IllegalStateException - 如果 expressionfalse
    • state

      public static void state(boolean expression, Supplier<String> messageSupplier)
      断言一个布尔表达式,如果表达式为 false,则抛出 IllegalStateException

      如果希望在断言失败时抛出 IllegalArgumentException,请调用 isTrue(boolean, java.lang.String)

       Assert.state(entity.getId() == null,
           () -> "ID for entity " + entity.getName() + " must not already be initialized");
       
      Parameters:
      expression - 布尔表达式
      messageSupplier - 断言失败时使用的异常消息供应者
      Throws:
      IllegalStateException - 如果 expressionfalse
    • isTrue

      public static void isTrue(boolean expression, String message)
      断言一个布尔表达式,如果表达式为 false,则抛出 BusinessException
      Assert.isTrue(i > 0, "The value must be greater than zero");
      Parameters:
      expression - 布尔表达式
      message - 断言失败时使用的异常消息
      Throws:
      BusinessException - 如果 expressionfalse
    • isTrue

      public static void isTrue(boolean expression, Status status)
      断言一个布尔表达式,如果表达式为 false,则抛出 BusinessException
      Assert.isTrue(i > 0, "The value must be greater than zero");
      Parameters:
      expression - 布尔表达式
      status - 断言失败时使用的异常状态
      Throws:
      BusinessException - 如果 expressionfalse
    • isTrue

      public static void isTrue(boolean expression, @Nonnull Supplier<Status> statusSupplier)
      断言一个布尔表达式,如果表达式为 false,则抛出 BusinessException
       Assert.isTrue(i > 0, () -> "The value '" + i + "' must be greater than zero");
       
      Parameters:
      expression - 布尔表达式
      statusSupplier - 断言失败时使用的异常状态供应者
      Throws:
      BusinessException - 如果 expressionfalse
    • isNull

      public static void isNull(@Nullable Object object, String message)
      断言对象为 null
      Assert.isNull(value, "值必须为 null");
      Parameters:
      object - 要检查的对象
      message - 断言失败时使用的异常消息
      Throws:
      BusinessException - 如果对象不为 null
    • isNull

      public static void isNull(@Nullable Object object, Status status)
      断言对象为 null
      Assert.isNull(value, "值必须为 null");
      Parameters:
      object - 要检查的对象
      status - 断言失败时使用的异常状态
      Throws:
      BusinessException - 如果对象不为 null
    • isNull

      public static void isNull(@Nullable Object object, @Nonnull Supplier<Status> statusSupplier)
      断言对象为 null
       Assert.isNull(value, () -> "值 '" + value + "' 必须为 null");
       
      Parameters:
      object - 要检查的对象
      statusSupplier - 断言失败时使用的异常状态供应者
      Throws:
      BusinessException - 如果对象不为 null
    • notNull

      public static void notNull(@Nullable Object object, String message, Object... msgArgs)
      断言对象不为 null,并允许传递格式化消息参数。
      Assert.notNull(value, "值 '{}' 不能为空", value);
      Parameters:
      object - 要检查的对象
      message - 断言失败时使用的异常消息
      msgArgs - 要替换格式锚点的参数
      Throws:
      BusinessException - 如果对象为 null
    • notNull

      public static void notNull(@Nullable Object object, Status status)
      断言对象不为 null
      Assert.notNull(clazz, "类不能为空");
      Parameters:
      object - 要检查的对象
      status - 断言失败时使用的异常状态
      Throws:
      BusinessException - 如果对象为 null
    • notNull

      public static void notNull(@Nullable Object object, @Nonnull Supplier<Status> statusSupplier)
      断言对象不为 null
       Assert.notNull(entity.getId(),
           () -> "实体 " + entity.getName() + " 的 ID 不能为空");
       
      Parameters:
      object - 要检查的对象
      statusSupplier - 断言失败时使用的异常状态供应者
      Throws:
      BusinessException - 如果对象为 null
    • hasLength

      public static void hasLength(@Nullable CharSequence text, String message)
      断言给定的字符串不为空;即,它不能为 null 且不能是空字符串。
      Assert.hasLength(name, "名称不能为空");
      Parameters:
      text - 要检查的字符串
      message - 断言失败时使用的异常消息
      Throws:
      BusinessException - 如果字符串为空
      See Also:
      • StringUtils#hasLength
    • hasLength

      public static void hasLength(@Nullable CharSequence text, Status status)
      断言给定的字符串不为空;即,它不能为 null 且不能是空字符串。
      Assert.hasLength(name, "名称不能为空");
      Parameters:
      text - 要检查的字符串
      status - 断言失败时使用的异常状态
      Throws:
      BusinessException - 如果字符串为空
      See Also:
      • StringUtils#hasLength
    • hasLength

      public static void hasLength(@Nullable CharSequence text, @Nonnull Supplier<Status> statusSupplier)
      断言给定的字符串不为空;即,它不能为 null 且不能是空字符串。
       Assert.hasLength(account.getName(),
           () -> "账户 '" + account.getId() + "' 的名称不能为空");
       
      Parameters:
      text - 要检查的字符串
      statusSupplier - 断言失败时使用的异常状态供应者
      Throws:
      BusinessException - 如果字符串为空
      See Also:
      • StringUtils#hasLength
    • hasText

      public static void hasText(@Nullable CharSequence text, String message)
      断言给定的字符串包含有效的文本内容;即,它不能为 null 并且必须包含至少一个非空白字符。
      Assert.hasText(name, "'name' 不能为空");
      Parameters:
      text - 要检查的字符串
      message - 断言失败时使用的异常消息
      Throws:
      BusinessException - 如果字符串不包含有效的文本内容
      See Also:
      • StringUtils#hasText
    • hasText

      public static void hasText(@Nullable CharSequence text, Status status)
      断言给定的字符串包含有效的文本内容;即,它不能为 null 并且必须包含至少一个非空白字符。
      Assert.hasText(name, "'name' 不能为空");
      Parameters:
      text - 要检查的字符串
      status - 断言失败时使用的异常状态
      Throws:
      BusinessException - 如果字符串不包含有效的文本内容
      See Also:
      • StringUtils#hasText
    • hasText

      public static void hasText(@Nullable CharSequence text, @Nonnull Supplier<Status> statusSupplier)
      断言给定的字符串包含有效的文本内容;即,它不能为 null 并且必须包含至少一个非空白字符。
       Assert.hasText(account.getName(),
           () -> "账户 '" + account.getId() + "' 的名称不能为空");
       
      Parameters:
      text - 要检查的字符串
      statusSupplier - 断言失败时使用的异常状态供应者
      Throws:
      BusinessException - 如果字符串不包含有效的文本内容
      See Also:
      • StringUtils#hasText
    • doesNotContain

      public static void doesNotContain(@Nullable String textToSearch, String substring, String message)
      断言给定的文本不包含给定的子字符串。
      Assert.doesNotContain(name, "rod", "名称不能包含 'rod'");
      Parameters:
      textToSearch - 要搜索的文本
      substring - 要在文本中查找的子字符串
      message - 断言失败时使用的异常消息
      Throws:
      BusinessException - 如果文本包含子字符串
    • doesNotContain

      public static void doesNotContain(@Nullable String textToSearch, String substring, Status status)
      断言给定的文本不包含给定的子字符串。
      Assert.doesNotContain(name, "rod", "名称不能包含 'rod'");
      Parameters:
      textToSearch - 要搜索的文本
      substring - 要在文本中查找的子字符串
      status - 断言失败时使用的异常状态
      Throws:
      BusinessException - 如果文本包含子字符串
    • doesNotContain

      public static void doesNotContain(@Nullable String textToSearch, @Nonnull String substring, @Nonnull Supplier<Status> statusSupplier)
      断言给定的文本不包含给定的子字符串。
       Assert.doesNotContain(name, forbidden, () -> "名称不能包含 '" + forbidden + "'");
       
      Parameters:
      textToSearch - 要搜索的文本
      substring - 要在文本中查找的子字符串
      statusSupplier - 断言失败时使用的异常状态供应者
      Throws:
      BusinessException - 如果文本包含子字符串
    • notEmpty

      public static void notEmpty(@Nullable Object[] array, String message)
      断言数组包含元素;即,它不能为 null 并且必须包含至少一个元素。
      Assert.notEmpty(array, "数组必须包含元素");
      Parameters:
      array - 要检查的数组
      message - 断言失败时使用的异常消息
      Throws:
      BusinessException - 如果对象数组为 null 或不包含任何元素
    • notEmpty

      public static void notEmpty(@Nullable Object[] array, Status status)
      断言数组包含元素;即,它不能为 null 并且必须包含至少一个元素。
      Assert.notEmpty(array, "数组必须包含元素");
      Parameters:
      array - 要检查��数组
      status - 断言失败时使用的异常状态
      Throws:
      BusinessException - 如果对象数组为 null 或不包含任何元素
    • notEmpty

      public static void notEmpty(@Nullable Object[] array, @Nonnull Supplier<Status> statusSupplier)
      断言数组包含元素;即,它不能为 null 并且必须包含至少一个元素。
       Assert.notEmpty(array, () -> "数组 " + arrayType + " 必须包含元素");
       
      Parameters:
      array - 要检查的数组
      statusSupplier - 断言失败时使用的异常状态供应者
      Throws:
      BusinessException - 如果对象数组为 null 或不包含任何元素
    • noNullElements

      public static void noNullElements(@Nullable Object[] array, String message)
      断言数组不包含 null 元素。

      注意:如果数组为空,不会抛出异常!

      Assert.noNullElements(array, "数组必须包含非 null 元素");
      Parameters:
      array - 要检查的数组
      message - 断言失败时使用的异常消息
      Throws:
      BusinessException - 如果对象数组包含 null 元素
    • noNullElements

      public static void noNullElements(@Nullable Object[] array, Status status)
      断言数组不包含 null 元素。

      注意:如果数组为空,不会抛出异常!

      Assert.noNullElements(array, "数组必须包含非 null 元素");
      Parameters:
      array - 要检查的数组
      status - 断言失败时使用的异常状态
      Throws:
      BusinessException - 如果对象数组包含 null 元素
    • noNullElements

      public static void noNullElements(@Nullable Object[] array, @Nonnull Supplier<Status> statusSupplier)
      断言数组不包含 null 元素。

      注意:如果数组为空,不会抛出异常!

       Assert.noNullElements(array, () -> "数组 " + arrayType + " 必须包含非 null 元素");
       
      Parameters:
      array - 要检查的数组
      statusSupplier - 断言失败时使用的异常状态供应者
      Throws:
      BusinessException - 如果对象数组包含 null 元素
    • notEmpty

      public static void notEmpty(@Nullable Collection<?> collection, String message)
      断言集合包含元素;即,它不能为 null 并且必须包含至少一个元素。
      Assert.notEmpty(collection, "集合必须包含元素");
      Parameters:
      collection - 要检查的集合
      message - 断言失败时使用的异常消息
      Throws:
      BusinessException - 如果集合为 null 或不包含任何元素
    • notEmpty

      public static void notEmpty(@Nullable Collection<?> collection, Status status)
      断言集合包含元素;即,它不能为 null 并且必须包含至少一个元素。
      Assert.notEmpty(collection, "集合必须包含元素");
      Parameters:
      collection - 要检查的集合
      status - 断言失败时使用的异常状态
      Throws:
      BusinessException - 如果集合为 null 或不包含任何元素
    • notEmpty

      public static void notEmpty(@Nullable Collection<?> collection, @Nonnull Supplier<Status> statusSupplier)
      断言集合包含元素;即,它不能为 null 并且必须包含至少一个元素。
       Assert.notEmpty(collection, () -> "集合 " + collectionType + " 必须包含元素");
       
      Parameters:
      collection - 要检查的集合
      statusSupplier - 断言失败时使用的异常状态供应者
      Throws:
      BusinessException - 如果集合为 null 或不包含任何元素
    • noNullElements

      public static void noNullElements(@Nullable Collection<?> collection, String message)
      断言集合不包含 null 元素。

      注意:如果集合为空,不会抛出异常!

      Assert.noNullElements(collection, "集合必须包含非 null 元素");
      Parameters:
      collection - 要检查的集合
      message - 断言失败时使用的异常消息
      Throws:
      BusinessException - 如果集合包含 null 元素
    • noNullElements

      public static void noNullElements(@Nullable Collection<?> collection, String message, Object... msgArgs)
      断言集合不包含 null 元素。
      Assert.noNullElements(collection, "集合 '{}' 必须包含非 null 元素", collectionName);
      Parameters:
      collection - 要检查的集合
      message - 断言失败时使用的异常消息
      msgArgs - 要替换格式锚点的参数
      Throws:
      BusinessException - 如果集合包含 null 元素
    • noNullElements

      public static void noNullElements(@Nullable Collection<?> collection, Status status)
      断言集合不包含 null 元素。

      注意:如果集合为空,不会抛出异常!

      Assert.noNullElements(collection, "集合必须包含非 null 元素");
      Parameters:
      collection - 要检查的集合
      status - 断言失败时使用的异常状态
      Throws:
      BusinessException - 如果集合包含 null 元素
    • noNullElements

      public static void noNullElements(@Nullable Collection<?> collection, @Nonnull Supplier<Status> statusSupplier)
      断言集合不包含 null 元素。

      注意:如果集合为空,不会抛出异常!

       Assert.noNullElements(collection, () -> "集合 " + collectionName + " 必须包含非 null 元素");
       
      Parameters:
      collection - 要检查的集合
      statusSupplier - 断言失败时使用的异常状态供应者
      Throws:
      BusinessException - 如果集合包含 null 元素
    • notEmpty

      public static void notEmpty(@Nullable Map<?,?> map, String message)
      断言 Map 包含条目;即,它不能为 null 并且必须包含至少一个条目。
      Assert.notEmpty(map, "Map 必须包含条目");
      Parameters:
      map - 要检查的 Map
      message - 断言失败时使用的异常消息
      Throws:
      BusinessException - 如果 Map 为 null 或不包含任何条目
    • notEmpty

      public static void notEmpty(@Nullable Map<?,?> map, String message, Object... msgArgs)
      断言 Map 包含条目,并允许传递格式化消息参数。
      Assert.notEmpty(map, "Map '{}' 必须包含条目", mapName);
      Parameters:
      map - 要检查的 Map
      message - 断言失败时使用的异常消息
      msgArgs - 要替换格式锚点的参数
      Throws:
      BusinessException - 如果 Map 为 null 或不包含任何条目
    • notEmpty

      public static void notEmpty(@Nullable Map<?,?> map, Status status)
      断言 Map 包含条目;即,它不能为 null 并且必须包含至少一个条目。
      Assert.notEmpty(map, "Map 必须包含条目");
      Parameters:
      map - 要检查的 Map
      status - 断言失败时使用的异常状态
      Throws:
      BusinessException - 如果 Map 为 null 或不包含任何条目
    • notEmpty

      public static void notEmpty(@Nullable Map<?,?> map, @Nonnull Supplier<Status> statusSupplier)
      断言 Map 包含条目;即,它不能为 null 并且必须包含至少一个条目。
       Assert.notEmpty(map, () -> "Map " + mapType + " 必须包含条目");
       
      Parameters:
      map - 要检查的 Map
      statusSupplier - 断言失败时使用的异常状态供应者
      Throws:
      BusinessException - 如果 Map 为 null 或不包含任何条目
    • isInstanceOf

      public static void isInstanceOf(@Nonnull Class<?> type, @Nullable Object obj, String message)
      断言提供的对象是提供的类的实例。
      Assert.isInstanceOf(Foo.class, foo, "期望是 Foo 类的实例");
      Parameters:
      type - 要检查的类型
      obj - 要检查的对象
      message - 断言失败时使用的异常消息
      Throws:
      BusinessException - 如果对象不是该类型的实例
    • isInstanceOf

      public static void isInstanceOf(@Nonnull Class<?> type, @Nullable Object obj, Status status)
      断言提供的对象是提供的类的实例。
      Assert.isInstanceOf(Foo.class, foo, "期望是 Foo 类的实例");
      Parameters:
      type - 要检查的类型
      obj - 要检查的对象
      status - 断言失败时使用的异常状态
      Throws:
      BusinessException - 如果对象不是该类型的实例
    • isInstanceOf

      public static void isInstanceOf(@Nonnull Class<?> type, @Nullable Object obj, @Nonnull Supplier<Status> statusSupplier)
      断言提供的对象是提供的类的实例。
       Assert.isInstanceOf(Foo.class, foo, () -> "处理 " + Foo.class.getSimpleName() + ":");
       
      Parameters:
      type - 要检查的类型
      obj - 要检查的对象
      statusSupplier - 断言失败时使用的异常状态供应者
      Throws:
      BusinessException - 如果对象不是该类型的实例
    • isAssignable

      public static void isAssignable(@Nonnull Class<?> superType, @Nullable Class<?> subType, String message)
      断言 superType.isAssignableFrom(subType)true
      Assert.isAssignable(Number.class, myClass, "期望是 Number 类的子类");
      Parameters:
      superType - 要检查的超类
      subType - 要检查的子类
      message - 断言失败时使用的异常消息
      Throws:
      BusinessException - 如果类不可赋值
    • isAssignable

      public static void isAssignable(@Nonnull Class<?> superType, @Nullable Class<?> subType, Status status)
      断言 superType.isAssignableFrom(subType)true
      Assert.isAssignable(Number.class, myClass, "期望是 Number 类的子类");
      Parameters:
      superType - 要检查的超类
      subType - 要检查的子类
      status - 断言失败时使用的异常状态
      Throws:
      BusinessException - 如果类不可赋值
    • isAssignable

      public static void isAssignable(@Nonnull Class<?> superType, @Nullable Class<?> subType, @Nonnull Supplier<Status> statusSupplier)
      断言 superType.isAssignableFrom(subType)true
       Assert.isAssignable(Number.class, myClass, () -> "处理 " + myAttributeName + ":");
       
      Parameters:
      superType - 要检查的超类
      subType - 要检查的子类
      statusSupplier - 断言失败时使用的异常状态供应者
      Throws:
      BusinessException - 如果类不可赋值