Java中的SuppressWarnings注解使用
@SuppressWarnings 注解
@SuppressWarnings: 抑制編譯器警告
如下,可以看到idea中有警告的顏色標(biāo)注

當(dāng)我們不希望看到這些警告的時(shí)候,可以使用 SuppressWarnings注解來(lái)抑制警告信息
在{" "} 中,可以寫入你希望抑制(不顯示)警告信息
在idea中可以看到這些警告的信息,然后根據(jù)下面的屬性介紹依次填入對(duì)應(yīng)的抑制警告的參數(shù),如:

rawtypes,抑制與使用raw類型相關(guān)的警告

unchecked,抑制與未檢查的作業(yè)相關(guān)的警告

unused,抑制與未用的程式碼及停用的程式碼相關(guān)的警告
可以從下面的警告參數(shù)中找到對(duì)應(yīng)的警告參數(shù)即可??梢钥吹骄嫒勘灰种屏?/p>

當(dāng)然,也可以直接選擇參數(shù) all,警告就全部會(huì)被抑制

關(guān)于SuppressWarnings 作用范圍是和放置的位置相關(guān)
比如 @SuppressWarnings放置在 main方法,那么抑制警告的范圍就是 main,通常我們可以放置具體的語(yǔ)句、方法、 類。
@SuppressWarnings注解的常見(jiàn)的值unchecked是忽略沒(méi)有檢查的警告rawtypes是忽略沒(méi)有指定泛型的警告(傳參時(shí)沒(méi)有指定泛型的警告錯(cuò)誤)unused是忽略沒(méi)有使用某個(gè)變量的警告錯(cuò)誤@SuppressWarnings可以修飾的程序元素,查看 @Target
查看源碼:
(1) 放置的位置就是 TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE
(2) 該注解類有數(shù)組 String[] values() ,設(shè)置一個(gè)數(shù)組比如 {"rawtypes", "unchecked", "unused"}

生成@SupperssWarnings時(shí),不用背,直接點(diǎn)擊左側(cè)的黃色提示,就可以選擇(注意可以指定生成的位置)
@SuppressWarning 中的屬性介紹以及屬性說(shuō)明
all:抑制所有警告boxing:抑制與封裝/拆裝作業(yè)相關(guān)的警告cast:抑制與強(qiáng)制轉(zhuǎn)型作業(yè)相關(guān)的警告dep-ann:抑制與淘汰注釋相關(guān)的警告deprecation:抑制與淘汰的相關(guān)警告fallthrough:抑制與switch陳述式中遺漏break相關(guān)的警告finally:抑制與未傳回finally區(qū)塊相關(guān)的警告hiding:抑制與隱藏變數(shù)的區(qū)域變數(shù)相關(guān)的警告incomplete-switch:抑制與switch陳述式(enum case)中遺漏項(xiàng)目相關(guān)的警告javadoc:抑制與javadoc相關(guān)的警告nls:抑制與非nls字串文字相關(guān)的警告null:抑制與空值分析相關(guān)的警告rawtypes:抑制與使用raw類型相關(guān)的警告resource:抑制與使用Closeable類型的資源相關(guān)的警告restriction:抑制與使用不建議或禁止參照相關(guān)的警告serial:抑制與可序列化的類別遺漏serialVersionUID欄位相關(guān)的警告static-access:抑制與靜態(tài)存取不正確相關(guān)的警告static-method:抑制與可能宣告為static的方法相關(guān)的警告super:抑制與置換方法相關(guān)但不含super呼叫的警告synthetic-access:抑制與內(nèi)部類別的存取未最佳化相關(guān)的警告sync-override:抑制因?yàn)橹脫Q同步方法而遺漏同步化的警告unchecked:抑制與未檢查的作業(yè)相關(guān)的警告unqualified-field-access:抑制與欄位存取不合格相關(guān)的警告unused:抑制與未用的程式碼及停用的程式碼相關(guān)的警告
@SuppressWarnings 注解常見(jiàn)用法
使用場(chǎng)合
@SuppressWarnings注解,主要用于抑制編譯器報(bào)出的warning信息。
比如在idea中,如果某個(gè)方法的返回值沒(méi)有被使用,idea在語(yǔ)法檢查時(shí),會(huì)把這個(gè)方法標(biāo)記為陰影狀態(tài),鼠標(biāo)懸停后會(huì)顯示對(duì)應(yīng)的原因。

如果此時(shí)我覺(jué)得這個(gè)返回值是必要的,只是暫時(shí)還沒(méi)用到,就可以加一個(gè)@SuppressWarnings注解,抑制警告信息。

當(dāng)然,不是每時(shí)每刻都需要解決warning。一般會(huì)在提交代碼前做一個(gè)檢查,例如用idea的gui提交到git倉(cāng)庫(kù)時(shí),默認(rèn)會(huì)對(duì)我們的修改做一個(gè)檢查,如果有warning信息會(huì)提示我們修改。
注解介紹
@SuppressWarnings注解可標(biāo)注于類、屬性、方法、參數(shù)構(gòu)造函數(shù)、局部變量上。
一般需滿足最小范圍原則,即如果警告信息來(lái)自于某個(gè)方法時(shí),則將此注解標(biāo)注與該方法上,而不要標(biāo)注于范圍更大的類上。
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
String[] value();
}注解只有一個(gè)value值,用于接收warning的類型,下面列舉常見(jiàn)的value。
value常見(jiàn)取值
UnusedReturnValue
作用:抑制 “方法的返回值未被使用”警告
示例:
@SuppressWarnings("UnusedReturnValue")
int batchInsert(@Param("lists") List<T>lists, Class<T>clazz);unused
作用:抑制“方法或者變量未被使用”警告
示例:
@SuppressWarnings("unused")
public <T> String getByPrimaryKey(Object key, Class<T> clazz) {unchecked
作用:抑制“未經(jīng)檢查的類型轉(zhuǎn)化”警告
示例:

all
作用:抑制所有的報(bào)錯(cuò)
盡量遵守“最小范圍”原則,一般情況下不要用。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot解決跨域請(qǐng)求攔截問(wèn)題代碼實(shí)例
這篇文章主要介紹了SpringBoot解決跨域請(qǐng)求攔截代碼實(shí)例,在微服務(wù)開(kāi)發(fā)中,一個(gè)系統(tǒng)包含多個(gè)微服務(wù),會(huì)存在跨域請(qǐng)求的場(chǎng)景。 本文講解SpringBoot解決跨域請(qǐng)求攔截的問(wèn)題。,需要的朋友可以參考下2019-06-06
mvc架構(gòu)實(shí)現(xiàn)商品的購(gòu)買(二)
這篇文章主要為大家詳細(xì)介紹了mvc架構(gòu)實(shí)現(xiàn)商品購(gòu)買功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
詳解Spring MVC攔截器實(shí)現(xiàn)session控制
這篇文章主要介紹了詳解Spring MVC攔截器實(shí)現(xiàn)session控制,使用session監(jiān)聽(tīng),重復(fù)登錄后,強(qiáng)制之前登錄的session過(guò)期。有興趣的可以了解一下。2017-01-01
SpringBoot+RabbitMq具體使用的幾種姿勢(shì)
這篇文章主要介紹了SpringBoot+RabbitMq具體使用的幾種姿勢(shì),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
關(guān)于Java集合框架Collection接口詳解
這篇文章主要介紹了關(guān)于Java集合框架Collection接口詳解,Collection接口是Java集合框架中的基礎(chǔ)接口,定義了一些基本的集合操作,包括添加元素、刪除元素、遍歷集合等,需要的朋友可以參考下2023-05-05
Java基于ServletContextListener實(shí)現(xiàn)UDP監(jiān)聽(tīng)
這篇文章主要介紹了Java基于ServletContextListener實(shí)現(xiàn)UDP監(jiān)聽(tīng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12

