Assert绝对是一个令人眼睛一亮的类,它简洁得以单行形式就完成了对象的校验及不合规时抛出异常,具体做法如下:
Object obj=null; ...... Assert.notNull(obj, "对象不该为空而为空,故而抛出异常");
而执行结果是:
Exception in thread "main" java.lang.IllegalArgumentException: 对象不该为空而为空,故而抛出异常 at org.springframework.util.Assert.notNull(Assert.java:201) at ufo.Test.main(Test.java:8)
这种做法显然比常规的判空抛异常简便,又比Optional实用。
Assert类的常用方法还有
Assert.hasText(String text, "text must not be empty") | text 不为null且必须至少包含一个非空格的字符 |
Assert.hasLength(String text, "text must be specified") | 字符不为null且字符长度不为0 |
Assert.notEmpty(Collection collection, "collection must not be empty") | 集合非空 |
Assert.isTrue(boolean value, "value must be true") | 对象必须为true |
Assert.isInstanceOf(Class type, Object obj, String message) | 如果 obj 不能被正确造型为 clazz 指定的类将抛出异常 |
其余请大家补充。
这个类全路径名是org.springframework.util.Assert,它在我的机器上位于spring-core-5.3.9.jar包中,即spring-core-[version].jar中。
要使用这个类,对于必然引入spring-core包的SpringBoot/SpringCloud程序来说,直接使用即可,但对于Maven工程,就需要引入spring-core的依赖了。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.hy</groupId> <artifactId>ufo</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.3.9</version> </dependency>
... </dependencies> </project>
我是怎么找到这个位置的呢?我是先找到本机上的.m2路径(C:\Users\ufo\.m2),然后找到repository目录,再找到org目录,在找到springframework目录,再找到spring-core目录,最后确定 5.3.9 目录,发现spring-core-5.3.9.jar就在其中。全路径是:C:\Users\ufo\.m2\repository\org\springframework\spring-core\5.3.9
最后,5.3.9填到version节点里,spring-core填到artifactId里,org.springframework填到groupId里。
我们可以发现,对于.ms/repository里面的jar包,有着这样的对应关系:
倒数第一层目录 | version |
倒数第二层目录 | artifactId |
repository到倒数第三层中间的路径 | groupId |
最后,有了
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.3.9</version> </dependency>
这个依赖,Maven工程就能愉快的使用Assert类了。
END