定义和目的标记界面:

不包含方法声明。
将类标记为具有特定属性。
示例: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 等方法契约。
与标记注释比较

书签备注:

可以应用于更多的程序元素(类、接口、方法等)。

示例:

@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
}

登录后复制

总结

标记接口用于定义类型,无需额外方法。
标记注释用于广泛标记程序元素。
选择取决于标记的上下文和目的。
以上就是Item 使用标记接口来定义类型的详细内容,更多请关注php中文网其它相关文章!