如何防止擴展接口
回答
沒有辦法阻止擴展接口。
您可以檢測到有人在運行時使用反射擴展了您的接口。
您能否詳細說明我們如何才能找到接口是否通過反射擴展? – JWhiz 2010-08-21 15:53:25
@JWhiz:你的第二個問題與這個非常相似:http://stackoverflow.com/questions/435890/find-java-classes-implementing-an-interface唯一的區別是你對接口感興趣,而不是類,但技術是一樣的。 – 2010-08-21 16:05:46
這裏的問題是概念問題。接口是爲了擴展,因爲它們不能按原樣使用。
你可以做的是把接口放在一個包中,並給它默認的可見性。只有該包中的類才能實現該接口。
但是使用該解決方案,您也失去了使用該包之外的接口的可能性,因此它不是真正的解決方案。
我認爲他意味着從給定的接口擴展了另一個接口。 – 2010-08-21 15:45:52
沒錯,但這個概念仍然是關鍵:接口只是說某些方法以某種方式工作的一種方式。擴展接口就是說系統中還有一些其他接口。禁止以與「最終」關鍵字與類一起工作的方式來定義接口是沒有意義的,其中實際代碼可能最終以與原始設計相反的方式使用,如果該類被擴展的話。 – 2010-08-21 15:53:05
這與以前提出的問題非常相似 - final interface in java。
我給出了兩個答案。
- 是的,通過byte code engineering。生成的接口無法擴展但無實際價值
- 是,annotations是無法通過其他接口擴展的接口。
另外,你可以把接口放在一個類中,給它一個私人訪問修飾符,並確保該類文件中沒有接口擴展它。
- 1. 如何防止AppBarLayout擴展?
- 2. 如何擴展擴展類的接口
- 3. 防止擴展guide_colourbar
- 4. 如何擴展Typescript接口?
- 5. 如何防止DOMXPath擴展HTML實體?
- 6. 擴展接口
- 7. 擴展接口
- 8. 防止擴展到textarea
- 9. 防止sed擴展變量
- 10. SAS:防止擴展端點
- 11. 接口擴展TimerTask
- 12. 如何擴展JNA接口映射? (JAVA)
- 13. 類擴展或接口如何工作?
- 14. 如何實現擴展接口?
- 15. AS3/Flex:接口擴展接口
- 16. 接口擴展接口屬性
- 17. v-if防止引導下拉擴展
- 18. 防止擴展標題內的元素
- 19. 防止Android對話框擴展活動
- 20. 防止TI BASIC表達式擴展
- 21. Android 5.0,防止狀態欄擴展
- 22. 我可以防止擴展HorizontalScrollView嗎?
- 23. 防止JScrollPane擴展其viewPort組件
- 24. 防止*在bash腳本擴展
- 25. 防止用Javascript擴展對象
- 26. 擴展Iterable的Haxe接口
- 27. C#類型擴展接口
- 28. 擴展方法到接口
- 29. 擴展和實現接口
- 30. GWT擴展常量接口
這樣做的動機是什麼?在我看來,從語義上講,沒有什麼可以獲得,如果你明白接口是什麼以及它們用於什麼。 – Santa 2010-08-21 16:29:30
如果你不創建它不能被擴展的接口,除非some1創建它,所以告訴no1。 – IAdapter 2010-08-21 20:29:56