1.4 @SuppressWarnings:抑制编译器警告
Java 中的 @SuppressWarnings 注解指示被該注解修飾的程序元素(以及該程序元素中的所有子元素)取消顯示指定的編譯器警告,且會(huì)一直作用于該程序元素的所有子元素。例如,使用 @SuppressWarnings 修飾某個(gè)類取消顯示某個(gè)編譯器警告,同時(shí)又修飾該類里的某個(gè)方法取消顯示另一個(gè)編譯器警告,那么該方法將會(huì)同時(shí)取消顯示這兩個(gè)編譯器警告。
@SuppressWarnings 注解主要用在取消一些編譯器產(chǎn)生的警告對(duì)代碼左側(cè)行列的遮擋,有時(shí)候這樣會(huì)擋住我們斷點(diǎn)調(diào)試時(shí)打的斷點(diǎn)。如下圖所示。
如果你確認(rèn)程序中的警告沒(méi)有問(wèn)題,可以不用理會(huì)。通常情況下,如果程序中使用沒(méi)有泛型限制的集合將會(huì)引起編譯器警告,為了避免這種編譯器警告,可以使用 @SuppressWarnings 注解消除這些警告。
注解的使用有以下三種:
- 抑制單類型的警告:@SuppressWarnings(“unchecked”)
- 抑制多類型的警告:@SuppressWarnings(“unchecked”,“rawtypes”)
- 抑制所有類型的警告:@SuppressWarnings(“unchecked”)
抑制警告的關(guān)鍵字如下表所示。
| all | 抑制所有警告 |
| boxing | 抑制裝箱、拆箱操作時(shí)候的警告 |
| cast | 抑制映射相關(guān)的警告 |
| dep-ann | 抑制啟用注釋的警告 |
| deprecation | 抑制過(guò)期方法警告 |
| fallthrough | 抑制在 switch 中缺失 breaks 的警告 |
| finally | 抑制 finally 模塊沒(méi)有返回的警告 |
| hiding | 抑制相對(duì)于隱藏變量的局部變量的警告 |
| incomplete-switch | 忽略不完整的 switch 語(yǔ)句 |
| nls | 忽略非 nls 格式的字符 |
| null | 忽略對(duì) null 的操作 |
| rawtypes | 使用 generics 時(shí)忽略沒(méi)有指定相應(yīng)的類型 |
| restriction | 抑制禁止使用勸阻或禁止引用的警告 |
| serial | 忽略在 serializable 類中沒(méi)有聲明 serialVersionUID 變量 |
| static-access | 抑制不正確的靜態(tài)訪問(wèn)方式警告 |
| synthetic-access | 抑制子類沒(méi)有按最優(yōu)方法訪問(wèn)內(nèi)部類的警告 |
| unchecked | 抑制沒(méi)有進(jìn)行類型檢查操作的警告 |
| unqualified-field-access | 抑制沒(méi)有權(quán)限訪問(wèn)的域的警告 |
| unused | 抑制沒(méi)被使用過(guò)的代碼的警告 |
使用 @SuppressWarnings 注解示例代碼如下:
public class HelloWorld {@SuppressWarnings({ "deprecation" })public static void main(String[] args) {Person p = new Person();p.setNameAndAge("C語(yǔ)言中文網(wǎng)", 20);p.name = "Java教程";} }在 Eclipse 顯示如下圖所示。
上述代碼第 2 行使用 @SuppressWarnings({ “deprecation” }) 注解了 main 方法。在《Java @Deprecated注解》一節(jié)中的 Person 代碼中,這些 API 已經(jīng)過(guò)時(shí)了,所以代碼第 4 行~第 6 行是編譯警告,但是在使用了 @SuppressWarnings 注解之后會(huì)發(fā)現(xiàn)程序代碼的警告沒(méi)有了。
總結(jié)
以上是生活随笔為你收集整理的1.4 @SuppressWarnings:抑制编译器警告的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 1.3 @Deprecated注解
- 下一篇: 1.5 @SafeVarargs注解