我使用的Checkstyle和我得到這個方法的錯誤:錯誤地發出Checkstyle「方法不適用於擴展」錯誤?
public final String getAdmitCodeStatus() {
return admitCodeStatus;
}
這是我得到的錯誤:
法「getAdmitCodeStatus」沒有設計爲可擴展 - 必須是抽象的,最終的或空的。
該方法不符合?有什麼我做錯了,Checkstyle會對我說這個方法嗎?
我使用的Checkstyle和我得到這個方法的錯誤:錯誤地發出Checkstyle「方法不適用於擴展」錯誤?
public final String getAdmitCodeStatus() {
return admitCodeStatus;
}
這是我得到的錯誤:
法「getAdmitCodeStatus」沒有設計爲可擴展 - 必須是抽象的,最終的或空的。
該方法不符合?有什麼我做錯了,Checkstyle會對我說這個方法嗎?
它看起來是由DesignForExtension
規則引起的。根據the documentation:
檢查類是否被設計用於擴展。更具體地說, 實施了一種編程風格,其中超類提供可以由子類實現的空的「掛鉤」 。
確切的規則是類, 可以被子類的非專用,非靜態方法必須是
abstract or final or have an empty implementation
理由:該API的設計風格保護超對beeing 子類打破。缺點是子類的靈活性受限於 ,特別是它們不能阻止在超類中執行代碼 ,但這也意味着子類不能通過忘記調用超級方法來破壞超類的狀態。
來源:http://sonar.15.n6.nabble.com/design-for-extension-rule-tp3200037p3200043.html
但你既是方法有final
改性劑,我說你發現了一個bug,可能要記錄一個錯誤報告。 https://github.com/checkstyle/checkstyle/issues
-1這是如何回答這個問題的? – 2013-10-16 14:01:18
@Chris你是對的。我修改了我的答案,表明它並沒有真正回答OP的問題。 – Snekse 2014-01-17 21:46:06
乍一看它看起來像在地球上一種編程風格,這是什麼......這 檢查只是無論您是刨的方法來被繼承或不...然後你可以宣佈他們final,abstract or empty implementation.
然後你聲明它最終...;) 類可以是最終的或方法個人取決於需求方案。
這似乎沒有回答這個問題。 OP正在宣佈他的方法是最終的,這似乎滿足了規則,他正在尋找一個解釋爲什麼他仍然得到錯誤。 – 2013-10-16 14:19:43
這是我的壞Nathan! 我沒有正確閱讀。 我也是新來的,所以我請求你的赦免,並且在從現在開始張貼時要多加小心。 謝謝! :) – 2013-10-16 17:48:52
不用擔心,誤讀問題很容易做到,我一直這麼做。 – 2013-10-16 17:55:34
我認爲這個檢查是有用的,大多數時候警告是合理的。有時它不合適,然後我忽略它。
您是否有另一個getAdmitCodeStatus實例違反該規則?例如,是否有一個基類用非空的實體來實現該方法? – 2011-04-25 15:51:09
你能否讓課程成爲最後一課,看看它是否會消失(如果你的課程確實可以成爲最終課程)? – CoolBeans 2011-04-25 15:52:35
@Chris:好主意,但我不知道。我只是做了一個搜索,以確保我沒有其他方法分享這個名字。 – McGlone 2011-04-25 16:14:20