
定义和目的
标记界面:
- 不包含方法声明。
- 将类标记为具有特定属性。
- 示例:serialized 表示一个类可以被序列化。
- 标记接口的优点
类型定义:
- 标记接口定义类实例实现的类型。
- 允许在编译时进行错误检测。
示例:
public class myclass implements serializable {
// implementação
}
编译时间检查:
- 使用标记接口可以在编译过程中检测到错误。
可序列化的示例:
objectoutputstream.writeobject(myobject); // garante que myobject seja serializable
打标准确度:
- 标记接口可以精确应用于特定的子类型。
示例:
public interface mymarkerinterface extends myspecificinterface {
// sem métodos adicionais
}
使用示例
可序列化:
- 表示一个类可以序列化。
示例:
public class person implements serializable {
private string name;
private int age;
// getters, setters, etc.
}
将接口设置为限制标记:
- 仅适用于collection的子类型,但不添加除collection定义之外的方法。
- 细化了 add、equals 和 hashcode 等方法契约。
- 与标记注释比较
书签备注:
系统包含模块:1、卖场系统适用客户:实体卖场,可以分类管理,每个分类设置一个客服,客服可以使用手机管理分类商品2、万能表单用户可以自定义表单字段,收集各样信息,并可以导出Excel3、第三方接口方便用户自己开发,目前仅支持text格式4、留言板可以显示用户的头像和昵称5、场景二维码这是高级接口的使用,方便统计用户来源6、一键分享一个仿微信公众号详情界面,可以分享到朋友圈7、婚纱摄影一个相册+店面展
- 可以应用于更多的程序元素(类、接口、方法等)。
示例:
@retention(retentionpolicy.runtime)
@target(elementtype.type)
public @interface mymarkerannotation {
}
@mymarkerannotation
public class myclass {
// implementação
}
何时使用标记接口与何时使用标记接口标记注释:
- 使用标记界面如果:
- 标记必须定义类型。
- 您可能想要编写只接受带有该标记的对象的方法。
在以下情况下使用标记注释:
- 该标签适用于类或接口以外的元素。
- 它是大量使用注释的框架的一部分。
记号笔的优点
- 框架的一致性:
- 促进基于注释的框架之间的一致性。
示例:
@myframeworkannotation
public class myclass {
// implementação
}
使用决定
定义类型:
- 使用标记界面。
- 标记不是类或接口的元素:
- 使用项目符号注释。
基于注释的框架的一部分:
使用项目符号注释。
最终示例
- 标记接口:
public interface mytypemarker {
}
public class myclass implements mytypemarker {
// implementação
}
public void process(mytypemarker obj) {
// processa apenas objetos marcados com mytypemarker
}
书签备注:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyAnnotationMarker {
}
@MyAnnotationMarker
public class MyClass {
// Implementação
}
总结
- 标记接口用于定义类型,无需额外方法。
- 标记注释用于广泛标记程序元素。
- 选择取决于标记的上下文和目的。









