如何防止扩展接口
回答
没有办法阻止扩展接口。
您可以检测到有人在运行时使用反射扩展了您的接口。
您能否详细说明我们如何才能找到接口是否通过反射扩展? – 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. 如何防止DOMXPath扩展HTML实体?
- 5. 防止扩展到textarea
- 6. 如何扩展JNA接口映射? (JAVA)
- 7. 接口扩展接口属性
- 8. 防止*在bash脚本扩展
- 9. v-if防止引导下拉扩展
- 10. 防止Android对话框扩展活动
- 11. 防止扩展标题内的元素
- 12. 防止用Javascript扩展对象
- 13. 组合或扩展接口?
- 14. Java接口扩展Cloneable的
- 15. 扩展和实现接口
- 16. GWT扩展常量接口
- 17. 扩展方法和接口
- 18. Enum <?扩展接口>
- 19. 接口的扩展方法
- 20. 扩展接口为字典
- 21. 通用接口扩展?
- 22. C#类型扩展接口
- 23. Java接口扩展问题
- 24. 接口扩展可比
- 25. Java接口扩展可比
- 26. 扩展接口模式
- 27. 扩展Iterable的Haxe接口
- 28. 如何停止Chrome扩展?
- 29. 扩展.NET控件:如何防止HTML atttribute从渲染
- 30. 如何防止文件名扩展为循环在bash
这样做的动机是什么?在我看来,从语义上讲,没有什么可以获得,如果你明白接口是什么以及它们用于什么。 – Santa 2010-08-21 16:29:30
如果你不创建它不能被扩展的接口,除非some1创建它,所以告诉no1。 – IAdapter 2010-08-21 20:29:56