錯誤/警告

請在開啟「錯誤/警告」喜好設定頁面 Java > 編譯器 > 錯誤/警告喜好設定頁面中,指出「錯誤/警告」設定的喜好設定。

程式撰寫風格

選項

說明

預設值

Static 成員的非 Static 存取

當啟用時,每當以表示式接收器存取 Static 欄位或方法時,編譯器將發出錯誤或警告。 應該以類型名稱限定 Static 成員的參照。

警告

Static 成員的間接存取

如果啟用,編譯器會在間接存取 static 欄位或方法時,發出錯誤或警告。介面的 static 欄位應該以宣告類型名稱定義。

忽略

實例欄位的不完整存取

如果啟用,編譯器會在發現不完整的欄位存取(例如:遺漏 'this')時,發出錯誤或警告。

忽略

未記載的空區塊

如果啟用,編譯器會在發現不含解說註解的空區塊陳述式時,發出錯誤或警告。

忽略

存取含括類型的不可存取成員

當啟用時, 只要其模擬存取含括類型中無法存取的成員, 編譯器即會發出錯誤或警告。這類存取可能涉及效能。

忽略

含建構子名稱的方法

如果以建構子名稱來命名方法,通常會被視為較差的程式設計風格。 當啟用這個選項時, 編譯器會將這類情況標為錯誤或警告。

警告

參數指派

指派參數值通常都被視為不好的程式設計風格。 當啟用這個選項時, 編譯器會將這類情況標為錯誤或警告。

忽略

未提出的字串

當啟用時,編譯器會針對未提出的 String 文字(也就是不含 //$NON-NLS-<n>$ 標示)或不屬於 String 的未提出之 String 標示,發出一則錯誤或警告。

忽略

可能的程式設計問題

不含 serialVersionUID 的可序列化類別

如果啟用,編譯器會在實作 'java.io.Serializable' 的類型不含 serialVersionUID 欄位時,發出錯誤或警告。

警告

指派沒有影響(例如:'x = x')

如果啟用,編譯器會在指派沒有影響(例如:'x = x')時,發出錯誤或警告。

警告

可能的意外 Boolean 指派(例如:'if (a = b)')

當啟用時,每當編譯器發現可能意外指派了 Boolean(如 'if (a = b)'),它都會發出錯誤或警告。

忽略

'finally' 未正常完成

如果啟用,編譯器會在 'finally' 陳述式未正常完成(例如:包含 return 陳述式)時,發出錯誤或警告。

警告

空的陳述式

如果啟用,編譯器會在發現空的陳述式(例如:過多的分號)時,發出錯誤或警告。

忽略

在字串連接中使用 char 陣列

當啟用時,每當在下列「字串」連結中使用 char[] 表示式時,編譯器就會發出錯誤或警告:

"hello" + new char[]{'w','o','r','l','d'}

警告

隱藏 catch 區塊

對本端環境的 try 陳述式而言,某些 catch 區塊可能會隱藏其他區塊,例如:

try { throw new java.io.CharConversionException();
} catch (java.io.CharConversionException e) {
} catch (java.io.IOException e) {}.

當啟用這個選項時, 編譯器會針對對應至所檢查之異常狀況的快取區塊隱藏, 發出錯誤或警告。

警告

vararg 引數不嚴格的類型比對

如果啟用,編譯器會在發現 vararg 引數不嚴格的類型比對時,發出錯誤或警告。

警告

boxing 和 unboxing 轉換

如果啟用,編譯器會在發現 boxing 或 unboxing 轉換時,發出錯誤或警告。autoboxing 對效能可能會有負面影響。

忽略

'switch' 未涵蓋列舉類型常數

如果啟用,編譯器會在發現 switch 陳述式不含參照列舉之每一個 enum 常數的 case 陳述式時,發出錯誤或警告。

忽略

'switch' 案例失敗

如果啟用,每當編譯器發現 switch 案例沒有 'break' 陳述式時,它都會發出錯誤或警告。 switch 案例可以是空的。

忽略

空值參照

如果啟用,當編譯器發現解除參照可能是空值的區域變數時,它都會發出錯誤或警告。 請注意,這項分析非常保守,它只會考量有可疑情況的案例。

忽略

名稱投影和衝突

欄位宣告隱藏另一個欄位或變數

如果啟用這個選項,當欄位宣告隱藏另一個繼承的欄位時,編譯器會發出錯誤或警告。

忽略

區域變數宣告隱藏另一個欄位或變數

如果啟用這個選項,當區域變數宣告隱藏另一個欄位或變數時,編譯器會發出錯誤或警告。

忽略

包括建構子或 setter 方法參數

如果啟用這個選項,當建構子或 setter 方法參數隱藏另一個欄位或變數時,編譯器會另外發出錯誤或警告。

關閉

類型參數隱藏另一個類型

如果啟用這個選項,比方說,當內部類別的類型參數隱藏外部類型時,編譯器會發出錯誤或警告。

警告

已置換方法但看不到套件

套件的預設方法在另一套件中看不到, 因此無法置換。當啟用這個選項時, 編譯器會將這類情況標為錯誤或警告。

警告

介面方法與受保護的 'Object' 方法衝突

當啟用時,每當介面定義一個與非繼承「物件」方法不相容的方法時, 編譯器將發出錯誤或警告。在解決這個衝突之前,將無法實作這類介面,例如:

interface I {
   int clone();
}

警告

淘汰和受限制的 API

已棄用的 API

當啟用這個選項時, 編譯器將使用已棄用的 API 標為錯誤或警告。

警告

通知使用已棄用之程式碼內已棄用的 API

一旦啟用,編譯器將發出信號,指出在已停用的程式碼內使用已停用的 API。 問題的嚴重性是由「已棄用的 API」選項來控制。

關閉

通知置換或實作已棄用的方法

如果啟用,編譯器會通知置換或實作已棄用的方法。 問題的嚴重性是由「已棄用的 API」選項來控制。

關閉

禁止的參照(存取規則)

如果啟用,編譯器會通知存取規則中指定了禁止的參照。

錯誤

不建議的參照(存取規則)

如果啟用,編譯器會通知存取規則中指定了不建議的參照。

警告

不必要的程式碼

從未讀取區域變數

如果啟用,每當宣告了區域變數,但不曾在變數範圍內使用這個變數時,編譯器會發出錯誤或警告。

警告

從未讀取參數

如果啟用,每當宣告了參數,但不曾在其範圍內使用這個參數時,編譯器會發出錯誤或警告。

忽略

檢查置換和實作方法

如果啟用,每當宣告了參數,但不曾在範圍內利用這個參數來置換或實作方法時,編譯器會另外發出錯誤或警告。

關閉

匯入未使用

當啟用時, 編譯器會針對未用的匯入參照, 發出錯誤或警告。

警告

未使用的區域或私密成員

如果啟用,編譯器會在宣告了區域或私密成員,但從未在同一個單元內使用時,發出錯誤或警告。

警告

不必要的 else 陳述式

如果啟用,編譯器會在發現不必要的 else 陳述式(例如:if (condition) return; else doSomething();)時,發出錯誤或警告。

忽略

不必要的 cast 或 'instanceof' 作業

如果啟用,編譯器會在發現不必要的 cast 或 'instanceof' 作業(例如:if (object instanceof Object) return;)時,發出錯誤或警告。

忽略

不必要的擲出檢查異常狀況宣告

如果啟用,編譯器會在發現不必要的擲出異常狀況宣告時,發出錯誤或警告。

忽略

檢查置換和實作方法

如果啟用,編譯器會在置換或實作方法中發現不必要的擲出異常狀況宣告時,另外發出錯誤或警告。

關閉

未用的 break/continue 標籤

如果啟用,每當編譯器發現未用的 'break' 或 'continue' 標籤時,它都會發出錯誤或警告。

警告

一般的類型

未檢查的一般的類型作業

如果啟用,編譯器會在發現未檢查的一般的類型作業時,發出錯誤或警告。

警告

使用原始類型

如果啟用,每當編譯器發現使用原始類型(例如,使用 List,而不是 List<String>)時,它都會發出錯誤或警告。

忽略

以 final 類型界限宣告的一般的類型參數

如果啟用,編譯器會在發現用到 final 類型的類型界限時,發出錯誤或警告。

警告

附註

遺漏 '@Override' 註解

如果啟用,編譯器會在發現方法置換了另一個實作的方法且遺漏 '@Override' 註解時,發出錯誤或警告。

忽略

遺漏 '@Deprecated' 註解

如果啟用,編譯器會在發現已棄用的類型但沒有其他 '@Deprecated' 註解時,發出錯誤或警告。

忽略

註解用來作為超介面

如果啟用,編譯器會在發現類型實作了註解時,發出錯誤或警告。雖然可用,但這是不佳的做法。

警告

'@SuppressWarnings' 中有未處理的 warning 記號

如果啟用,編譯器會在發現 '@SuppressWarnings' 註解中有未處理的 warning 記號時,發出錯誤或警告。

警告

啟用 '@SuppressWarnings' 註解

如果啟用,編譯器會處理 '@SuppressWarnings' 註解。

開啟

相關概念

「問題」視圖
快速修正
Java 建置器