【org.springframework.util】public abstract class Assert

【org.springframework.util】public abstract class Assert,第1张

更新日期:2022/05/13

ɪz ɪt ðə dɪˈstɔːʃ(ə)n əv hjuːˈmænəti ɔːr ðə kəˈlæps əv məˈræləti ðæt laɪz bɪˈhaɪnd ɔːl ðɪs ?

目録
    • 1. Assert 快速开始
    • 2. Assert 方法总览
    • 3. Assert 使用示例

 


1. Assert 快速开始

Assert 编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。Spring Assert 断言工具类,通常用于数据合法性检查,帮助校验参数。通过使用 Assert 类方法,我们可以写出我们认为是正确的假设,反之会抛出运行时异常,使复杂的判断变得更加简单。

  • 通常的非空判断
if (message == null || message.equls("")) {
    throw new IllegalArgumentException("输入信息错误!不能为空!");
}
  • Aeesrt 类的非空判断
Assert.notNull(message, "输入信息错误!不能为空!");

 


2. Assert 方法总览
  • Assert.class
    都是static方法;
    抛出 IllegalArgumentException 或 IllegalStateException 异常;
    第一个参数通常是需验证的对象或逻辑条件;
    最后参数通常是异常消息,用于验证失败时显示(消息可以作为 String 参数或 Supplier 参数传输)。
方法说明
state断言状态为正确的,如果为 false 则抛出 IllegalStateException
isTrue断言结果为 true,如果为 false 则抛出 IllegalArgumentException
isNull断言一个可为空的对象为 null,如果不为 null 则抛出 IllegalArgumentException
notNull断言一个可为空的对象不为 null,如果为 null 则抛出 IllegalArgumentException
hasLength断言一个可为空的字符串有长度,如果为 null 或者长度为 0 则抛出 IllegalArgumentException
hasText断言一个可为空的字符串有内容,如果为 null 或者长度为 0 或者仅是一个 Java 空白字符则抛出 IllegalArgumentException
doesNotContain断言一个可为空的字符串不包含子字符串,如果两者都有值且主字符串包含子字符串则抛出 IllegalArgumentException
notEmpty断言一个可为空的数组不为 null,如果数组为 null 或者长度为 0 则抛出 IllegalArgumentException
noNullElements断言一个可为空的数组不为 null,如果数组为 null 或者长度为 0 或者有元素但元素为 null 则抛出 IllegalArgumentException
isInstanceOf断言一个可为空的对象是一个类的实例,如果类为 null 或对象不是类的实例则抛出 IllegalArgumentException
isAssignable断言一个子类可以转为父类,如果子类为 null 或子类不能转为父类则抛出 IllegalArgumentException

 


3. Assert 使用示例
  • public static void state(boolean expression, String message)
    校验参数是否具有速度,没有则不能更改状态为 drive。抛出异常:speed must be positive 。
*************************************************************************
public class AssertTest {
    private String state = "stop";
.........................................................................
    public static void main(String[] args) {
        AssertTest at = new AssertTest();
        at.drive(-5);
        System.out.println(at.state);
    }
.........................................................................
    public void drive(int speed) {
        Assert.state(speed > 0, "speed must be positive");
        this.state = "drive";
    }
}Console--------------------------------------------------------------
Exception in thread "main" java.lang.IllegalStateException: speed must be positive
	at org.springframework.util.Assert.state(Assert.java:76)
	at com.ouseki.itgodroad.ToBeSynchronized.AssertTest.drive(AssertTest.java:21)
	at com.ouseki.itgodroad.ToBeSynchronized.AssertTest.main(AssertTest.java:16)
*************************************************************************
  • public static void state(boolean expression, Supplier messageSupplier)
    也可以传递一个拉姆达表达式(String 类型)。
*************************************************************************
public class AssertTest {
    private String state = "stop";
.........................................................................
    public static void main(String[] args) {
        AssertTest at = new AssertTest();
        at.drive(-5);
        System.out.println(at.state);
    }
.........................................................................
    public void drive(int speed) {
        Assert.state(speed > 0, () -> "speed must be positive");
        this.state = "drive";
    }
}Console--------------------------------------------------------------
Exception in thread "main" java.lang.IllegalStateException: speed must be positive
	at org.springframework.util.Assert.state(Assert.java:97)
	at com.ouseki.itgodroad.ToBeSynchronized.AssertTest.drive(AssertTest.java:23)
	at com.ouseki.itgodroad.ToBeSynchronized.AssertTest.main(AssertTest.java:18)
*************************************************************************
  • public static void hasText(@Nullable String text, String message)
    校验参数是否为有效的文本。如果文本不含有效内容,抛出异常:IllegalArgumentException 。
*************************************************************************
public class AssertTest {
    public static void main(String[] args) {
        AssertTest at = new AssertTest();
        at.callTheRoll(" ");
    }
.........................................................................
    public void callTheRoll(String name) {
        Assert.hasText(name, "没有内容,请输入有效姓名");
        System.out.println(name + " 来上课了。");
    }
}Console--------------------------------------------------------------
Exception in thread "main" java.lang.IllegalArgumentException: 没有内容,请输入有效姓名
	at org.springframework.util.Assert.hasText(Assert.java:289)
	at com.ouseki.itgodroad.ToBeSynchronized.AssertTest.callTheRoll(AssertTest.java:19)
	at com.ouseki.itgodroad.ToBeSynchronized.AssertTest.main(AssertTest.java:15)
*************************************************************************

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/924472.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存