跟我学(Effective Java 2)第37条:用标记接口定义类型

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

标记接口(marker interface)是没有包含方法声明的接口,而只是指明一个类实现了具有某种属性的接口。 例如,Serializable接口。

标记接口有两点胜过标记注解。首先,也是最重要的一点是,标记接口定义的类型是由被标记类的实例实现的;标记注解则没有定义这样的类型。 这个类型允许你在编译时捕捉在使用标记注解的情况下要到运行时才能捕捉到的错误。

标记接口胜过标记注解的另一个优点是,他们可以被更加精确的进行锁定。如果注解类型利用@Target(ElementType.TYPE)声明,他就可以被应用到任何类或者接口。 假设有一个标记只适用于特殊接口的实现。如果将他定义成一个标记接口,就可以用它将唯一的接口扩展成他适用的接口。

标记注解胜过标记接口的最大优点在于,他可以通过默认的方法添加一个或者多个注解类型元素,给已有使用的注解类型添加更多的信息。 随着时间的推移,简单地标记注解类型可以演变成更丰富的注解类型。这种演变对于标记接口而言则是不可能的,因为他通常不能在实现接口之后再给他添加方法。

标记注解的另一个优点在于,他们是更大的注解机制的一部分。 因此,标记注解在那些支持注解作为编程元素之一的框架中同样具有以执行。

标记注解和标记接口的选择:

1.如果标记是应用到程序元素而不是类或者接口,就必须用注解;

2.如果标记只应用给类和接口,那么就标记接口优先于标记注解;

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值