java编程中的断言工具类(org.springframework.util.Assert)
轉自:https://blog.csdn.net/gokeiryou263/article/details/19612471
斷言工具類:Assert類,
java.lang.Object --->org.springframework.util.Assert
?
先舉個例子,
當我們在編寫類的方法時,常常需要對方法入參進行合法性檢查,如果入參不符合要求,方法將通過拋出異常的方式拒絕后續處理。如下所示:
public InputStream getData(String file) {
??????? ?if (file == null || file.length() == 0|| file.replaceAll("\\s", "").length() == 0) {
??????????????????throw new IllegalArgumentException("file入參不是有效的文件地址");
?????????}
??????????…
}
類似以上檢測方法入參的代碼是非常常見,但是在每個方法中都使用手工編寫檢測邏輯的方式并不是一個好主意。閱讀 Spring 源碼,您會發現 Spring 采用一個 org.springframework.util.Assert 通用類完成這一任務。
Assert 翻譯為中文為“斷言”,使用過 JUnit 的讀者都熟知這個概念,它斷定某一個實際的運行值和預期想一樣,否則就拋出異常。Spring 對方法入參的檢測借用了這個概念,其提供的 Assert 類擁有眾多按規則對方法入參進行斷言的方法,可以滿足大部分方法入參檢測的要求。這些斷言方法在入參不滿足要求時就會拋出 IllegalArgumentException。下面,我們來認識一下 Assert 類中的常用斷言方法:
斷言方法 說明
notNull(Object object) 當 object 為 null 時拋出異常,notNull(Object object, String message) 方法允許您通過 message 定制異常信息。和 notNull() 方法斷言規則相反的方法是 isNull(Object object)/isNull(Object object, String message),它要求入參一定是 null;
isTrue(boolean expression) / isTrue(boolean expression, String message) 當 expression 不為 true 拋出異常;
notEmpty(Collection collection) / notEmpty(Collection collection, String message) 當集合未包含元素時拋出異常。notEmpty(Map map) / notEmpty(Map map, String message) 和 notEmpty(Object[] array, String message) / notEmpty(Object[] array, String message) 分別對 Map 和 Object[] 類型的入參進行判斷;
hasLength(String text) / hasLength(String text, String message) 當 text 為 null 或長度為 0 時拋出異常;
hasText(String text) / hasText(String text, String message) text 不能為 null 且必須至少包含一個非空格的字符,否則拋出異常;
isInstanceOf(Class clazz, Object obj) / isInstanceOf(Class type, Object obj, String message) 如果 obj 不能被正確造型為 clazz 指定的類將拋出異常;
isAssignable(Class superType, Class subType) / isAssignable(Class superType, Class subType, String message) subType 必須可以按類型匹配于 superType,否則將拋出異常;
?
使用 Assert 斷言類可以簡化方法入參檢測的代碼,如 InputStream getData(String file) 在應用 Assert 斷言類后,其代碼可以簡化為以下的形式:
public InputStream getData(String file){
?????????Assert.hasText(file,"file入參不是有效的文件地址");
?????????① 使用 Spring 斷言類進行方法入參檢測
????????? …
?}
可見使用 Spring 的 Assert 替代自編碼實現的入參檢測邏輯后,方法的簡潔性得到了不少的提高。Assert 不依賴于 Spring 容器,您可以大膽地在自己的應用中使用這個工具類。
?
方法摘要
static?void doesNotContain(java.lang.String?textToSearch, java.lang.String?substring)
??????????斷言,給定的文本不包含給定的子串。
static?void doesNotContain(java.lang.String?textToSearch, java.lang.String?substring, java.lang.String?message)
??????????斷言,給定的文本不包含給定的子串。
static?void hasLength(java.lang.String?text)
??????????斷言,由于String是不是空的,也就是說,它不能null ,而不是空字符串。
static?void hasLength(java.lang.String?text, java.lang.String?message)
??????????斷言,由于String是不是空的,也就是說,它不能null ,而不是空字符串。
static?void hasText(java.lang.String?text)
??????????斷言定String具有有效的文本內容,即它不能null ,并且必須至少包含一個非空格字符。
static?void hasText(java.lang.String?text, java.lang.String?message)
??????????斷言定String具有有效的文本內容,即它不能null ,并且必須至少包含一個非空格字符。
static?void isAssignable(java.lang.Class?superType, java.lang.Class?subType)
??????????斷言superType.isAssignableFrom(subType)是true 。
static?void isAssignable(java.lang.Class?superType, java.lang.Class?subType, java.lang.String?message)
??????????斷言superType.isAssignableFrom(subType)是true 。
static?void isInstanceOf(java.lang.Class?clazz, java.lang.Object?obj)
??????????斷言提供的對象是所提供的類的實例。
static?void isInstanceOf(java.lang.Class?type, java.lang.Object?obj, java.lang.String?message)
??????????斷言提供的對象是所提供的類的實例。
static?void isNull(java.lang.Object?object)
??????????斷言一個對象是null 。
static?void isNull(java.lang.Object?object, java.lang.String?message)
??????????斷言一個對象是null 。
static?void isTrue(boolean?expression)
??????????斷言一個布爾表達式,扔IllegalArgumentException如果測試結果是false 。
static?void isTrue(boolean?expression, java.lang.String?message)
??????????斷言一個布爾表達式,扔IllegalArgumentException如果測試結果是false 。
static?void noNullElements(java.lang.Object[]?array)
??????????斷言一個數組沒有null元素。
static?void noNullElements(java.lang.Object[]?array, java.lang.String?message)
??????????斷言一個數組沒有null元素。
static?void notEmpty(java.util.Collection?collection)
??????????斷言,一個集合有元素,也就是說,它不能null ,而且必須有至少一個元素。
static?void notEmpty(java.util.Collection?collection, java.lang.String?message)
??????????斷言,一個集合有元素,也就是說,它不能null ,而且必須有至少一個元素。
static?void notEmpty(java.util.Map?map)
??????????斷言,一個地圖的作品,也就是說,它不能null ,并且必須至少有一個條目。
static?void notEmpty(java.util.Map?map, java.lang.String?message)
??????????斷言,一個地圖的作品,也就是說,它不能null ,并且必須至少有一個條目。
static?void notEmpty(java.lang.Object[]?array)
??????????斷言一個數組元素,即它不能null ,而且必須有至少一個元素。
static?void notEmpty(java.lang.Object[]?array, java.lang.String?message)
??????????斷言一個數組元素,即它不能null ,而且必須有至少一個元素。
static?void notNull(java.lang.Object?object)
??????????斷言一個對象不null 。
static?void notNull(java.lang.Object?object, java.lang.String?message)
??????????斷言一個對象不null 。
static?void state(boolean?expression)
??????????斷言一個布爾表達式,扔IllegalStateException如果測試結果是false 。
static?void state(boolean?expression, java.lang.String?message)
??????????斷言一個布爾表達式,扔IllegalStateException如果測試結果是false 。
?
從類 java.lang.Object 繼承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
---------------------
作者:gokeiryou263
來源:CSDN
原文:https://blog.csdn.net/gokeiryou263/article/details/19612471
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
總結
以上是生活随笔為你收集整理的java编程中的断言工具类(org.springframework.util.Assert)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解密方程式组织的Unix后门NOPEN
- 下一篇: 通过docker搭建zabbix监控系统