如果我從方法或其他「事物」中刪除final
關鍵字,我的類的用戶是否必須重新編譯?刪除「最終」關鍵字是否會影響二進制兼容性?
3
A
回答
3
從技術上講,他們不必重新編譯。
我想不出任何可能導致從方法/屬性中刪除最終關鍵字可能導致兼容性損失的任何影響,所以它不應該給你任何問題。
測試示例代碼,並且沒有運行時錯誤:
public class Test2{
public static final String test = "HELLO!";
}
public class Test {
public static void main (String [] args) {
System.out.println(Test2.test);
}
}
- 編譯Test.java
- 然Test.java - >輸出= 「你好!」
改性Test2.java:
public class Test2{ public static String test = "HELLO!"; }
編譯Test2.java
- 然Test.java - >輸出= 「!HELLO」
4
否,除去最後的關鍵字不會破壞兼容性假設你的罰款這種疣:
如果模塊B調用任何方法從模塊A和模塊C類推翻先前的最終方法,並將模塊C中的對象傳遞給模塊B,則調用將轉到模塊A的實現。
+0
請注意,這個特定的疣不應該依賴於工作,因爲任何依賴它的代碼都依賴於編譯器優化的功能。 – Joshua
2
如果您的客戶直接致電您的代碼,則不需要。 但是可能會破壞一個程序,它使用反射來發現你的類,檢查你的方法是否是最終的,並且如果方法是最終的,它會執行不同的事情。
2
直接從馬的嘴:
改變被聲明爲final不再被聲明爲final不破與預先存在的二進制兼容性的方法。
http://docs.oracle.com/javase/specs/jls/se7/html/jls-13.html#jls-13.4.17
相關問題
- 1. 負z指數是否會影響性能或兼容性?
- 2. Haskell二進制兼容性
- 3. 二進制兼容性
- 4. Linux二進制兼容性
- 5. STL容器的二進制兼容性
- 6. 是否更改vb.net break二進制兼容性的目標cpu?
- 7. 二進制兼容性vs向後兼容性
- 8. inline關鍵字是否會影響鏈接時間優化?
- 9. 規避vb6二進制兼容性
- 10. j2me波蘭語二進制兼容性
- 11. 文件的二進制兼容性*
- 12. 與C的二進制兼容性
- 13. COM接口和二進制兼容性
- 14. Solaris:libSTLPort.so與libCstd.so的二進制兼容性?
- 15. Linux發行版二進制兼容性
- 16. 確定二進制兼容性linux下
- 17. 使用x-ua兼容元標記是否影響Javascript性能?
- 18. 數據庫(最大)字段長度是否會影響性能?
- 19. 正在從構造函數二進制兼容刪除'顯式'?
- 20. 添加枚舉值會破壞二進制兼容性嗎?
- 21. 爲什麼必須將版本兼容性設置爲不兼容二進制兼容性,然後回到二進制兼容性才能使其工作?
- 22. 將添加/刪除函數靜態變量中斷二進制兼容性?
- 23. C++如何影響可變關鍵字的容器性能?
- 24. 變量是否會影響性能?
- 25. 使用require()是否會影響性能?
- 26. $(this)是否會影響性能,如$([selector])?
- 27. 現在SSL是否會影響性能?
- 28. 404錯誤是否會影響性能?
- 29. Hows是否會影響性能?
- 30. 使用'this'關鍵字會影響Java性能嗎?
@OliCharlesworth我想刪除它,而不是添加它。 – Erik