标记接口:运行时与编译时错误

时间:2015-02-13 10:32:30

标签: java interface compilation runtime

因此,阅读Java中的标记界面概念,对我来说感觉不对,主要是因为我参与编写应用程序,因为程序遇到运行时错误是一个灾难。

在设计方面,当我可以通过使用例如抽象类来避免运行时错误时,为什么我会使用标记接口,因为我有运行时错误的风险。

我一直以为我会避免运行时错误,即使我可能通过产生编译时错误来限制代码。

标记界面不会导致更高的失败风险,特别是当越来越多的开发人员不会真正阅读所有文档时(不是我,我是其中一个好人)

也许它只是我头脑中的C ++,但这样设计它有什么好处吗?

1 个答案:

答案 0 :(得分:0)

标记接口是在早期版本的Java中声明关于类的元数据的唯一方法,例如Serializable表示在调用serialize / deserialize时实现类将正常运行。

今天Marker接口对我来说有点多余(或过时),因为它们可以被Annotations取代,允许以非常灵活的方式描述类元数据。

刚从Joshua Bloch找到quote ......

  

您可能会听到它说标记注释(第35项)使标记接口过时。这个断言是不正确的。标记接口与标记注释相比具有两个优点。首先,标记接口定义由标记类的实例实现的类型;标记注释没有。此类型的存在允许您在编译时捕获错误,如果使用标记注释,则在运行时无法捕获这些错误。