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