Java中String...如何判空可變字符串如何判空

22Sep2020[Bug記錄]

什么是String...

String…是java5新加入的功能,表示的是一個可變長度的參數(shù)列表
其語法就是類型后跟…,表示此處接受的參數(shù)為0到多個Object類型的對象,或者是一個Object[]。 例如我們有一個方法叫做listsome(String…strings),那么你還可以寫方法listsome(),但你不能寫listsome(String[] strings),這樣會出編譯錯誤,系統(tǒng)提示出現(xiàn)重復的方法。
在使用的時候,對于listsome(String…strings),你可以直接用listsome()去調(diào)用,標示沒有參數(shù),也可以用去listsome(“aaa”),也可以用listsome(new String[]{“aaa”,”bbb”})。
另外如果既有l(wèi)istsome(String…strings)函數(shù),又有l(wèi)istsome()函數(shù),我們在調(diào)用listsome()時,會優(yōu)先使用listsome()函數(shù)。只有當沒有l(wèi)istsome()函數(shù)式,我們調(diào)用test(),程序才會走test(String…strings)

出現(xiàn)場景

    public static void initPage(Integer pageIndex, Integer pageLimit, String... sortKeys) {
        Assert.notNull(pageIndex, "分頁查詢,參數(shù)pageIndex不能為Null!");
        Assert.notNull(pageLimit, "分頁查詢,參數(shù)pageLimit不能為Null!");
        if (StringUtils.isEmpty(sortKeys)) {
            PageHelper.startPage(pageIndex, pageLimit);
        } else {
        ......
        }
}

對于一個傳遞過來的可變參數(shù)sortkey,我需要獲取到這個值中的內(nèi)容,但是由于允許這個值允許為空,因此在傳遞過程中取值過程中如果僅僅是簡單的使用Spring中自帶的String判空包有可能會拋出一個比較詭異的空指針異常,因此需要對其進行判空操作,而對于StringUtils.isEmpty()函數(shù)來說不能夠攔截到sortkey為空的情況
所在的Jar包org.springframework.util

    /**
     * Check whether the given {@code String} is empty.
     * <p>This method accepts any Object as an argument, comparing it to
     * {@code null} and the empty String. As a consequence, this method
     * will never return {@code true} for a non-null non-String object.
     * <p>The Object signature is useful for general attribute handling code
     * that commonly deals with Strings but generally has to iterate over
     * Objects since attributes may e.g. be primitive value objects as well.
     * @param str the candidate String
     * @since 3.2.1
     */
    public static boolean isEmpty(Object str) {
        return (str == null || "".equals(str));
    }

判空失敗

解決辦法

if (StringUtils.isEmpty(sortKeys)) {
    PageHelper.startPage(pageIndex, pageLimit);
} else {
    //工具包無法捕獲到sortKey為空的時候
    String sort = "";
    if (null==sortKeys[0]){
        PageHelper.startPage(pageIndex, pageLimit);
    } else{
        sort = sortKeys[0];
    }

解決完成,特此記錄防止重復踩坑

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容