第41条:用标记接口定义类型

定义类型有两种方式:
一种是注解,这个之前已经提到过。
另一种是标记接口(不含方法声明的接口)如Serializable:


image.png

将其作为标记来使用的好处是,可以在方法签名中要求类包含哪些标记(即实现了哪些接口),从而使得不符合规范的代码可以在编译时及时检查出来。


标记接口相较于标记注解的优点:

  • 标记接口定义的类型是由被标记类的实例实现的。比如class A implements Serializable,那么所有使用Serializable作为参数的地方都可以用A。
  • 可以被更加精确的锁定。使用注解可以加在任何类上,如果一个标记只适用于特殊接口的实现,就可以使用标记接口。比如Set继承于Collection,它没有实现任何Collection的方法。Set的存在依据就是标记这个接口的所有实现类都是集合内元素唯一的。
  • 注解的优点就是"更大注解机制的一部分",因此标记注解在支持标记的框架中具有一致性。

之前一直认为接口是用来定义行为的,没想到没有方法的接口还可以当做标记来使用。
当我们需要添加的标记只用于类级别时,可以优先使用标记接口。如果需要应用于任何程序元素时,则应该使用注解。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容