用标记接口定义类型(37)

1、标记接口(marker interface)

  • 没有包含方法声明的接口,只是表明一个类实现了具有某种属性的接口
  • 比如:Serializable 接口::仅表明可被序列化或可被写入ObjectOutputStream

标记注解使得标记接口过时的说法是不对的

  • 标记接口定义的类型由被标记类的实例实现的,标记注解没有这样的类型(这样编译是就会暴露错误,不用等到运行时)
  • 可以更加精确的被锁定::@Target 可以用于任何地方,标记接口可以被扩展成某个合适的接口
  • Set 接口是有限制的标记接口,改进了Collection 的几个契约(add、equals、hashCode)

标记注解胜过标记接口最大优点在于:

  • 通过默认的方式添加注解类型元素,给已被使用的注解类型添加更多的信息,简单注解会变得越来越丰富
  • 标记接口是不可能做到的

标记注解另一个优点:

  • 他们是更大注解机制的一部分

2、什么时候使用?

  • 标记是应用到任何程序元素而不是接口和类,必须使用注解
  • 如果只用于类和接口,这样使用标记接口,可以作为相关方法参数类型
  • 如果是多个方法中使用,永远作为标记特殊接口的元素,就用标记接口的子接口
  • 如果不是,用标记注解

转载于:https://my.oschina.net/u/3847203/blog/1835962

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值