java中的标记接口究竟是什么?

时间:2014-11-16 07:38:23

标签: java

标记界面是没有任何成员的界面。可序列化就是一个例子。

我们可以定义自己的标记界面吗?如果是,我们如何定义它的功能。?

6 个答案:

答案 0 :(得分:4)

为什么不呢?但它与JVM没什么关系。

interface MarkerInterface { }

class MarkerInterfaceImpl implements MarkerInterface {
   ...      
}

public class MarkerInterfaceDemo {
    public static void main(String[] args){
        MarkerInterfaceImpl markerInterfaceImpl = new MarkerInterfaceImpl()[
        if(markerInterfaceImpl instanceOf MarkerInterface) {
           ...
        }
    }
}

答案 1 :(得分:4)

Marker interface pattern(来自维基百科文章)提供了一种将元数据与语言关联的方法,其中语言没有明确支持此类元数据。例如java.io.Serializable 。类实现Serializable接口以指示其非瞬态数据成员可以写入ObjectOutputStream

答案 2 :(得分:2)

标记接口用作标记,用于将消息通知给java编译器,以便它可以向实现它的类添加特殊行为。

Java标记接口中没有成员。

实施例。  1. java.io.Serializable是Marker接口。

  1. java.lang.Cloneable

答案 3 :(得分:0)

如果仔细查看Java中的标记界面,例如Serializable,Clonnable和Remote看起来它们用于向编译器或JVM指示某些内容。因此,如果JVM看到Class是Serializable,它就会对它进行一些特殊的操作,类似的方式如果JVM看到一个Class实现Clonnable它会执行一些操作来支持克隆。 RMI和Remote接口也是如此。在最简单的Marker接口中指示,信号或命令到编译器或JVM。

- >实际上我们可以创建一个像标记接口这样的接口,但没有方法声明,但它根本不是标记接口,因为它不会向JVM指示某些东西,当我们的程序要执行时,它会为类提供一些特殊的行为。

例如:Serializable,Cloneable等......标记接口

当我的程序获得成功时,JVM为我的类提供了一些特殊的功能,它已经实现了Marker接口。

答案 4 :(得分:0)

标记接口用作标记,用于将消息通知给java编译器,以便它可以向实现它的类添加特殊行为。 Java标记接口中没有成员。
java.io.Serializable是一个标记接口。意思是这个接口的类意思就像以某种方式暗示java编译器,有可能序列化这个java类。
您可以创建自己的标记界面。只需创建一个界面而不在体内写任何东西 假设您已经创建了Editable标记接口并创建了许多实现此Editable的类,现在当某个程序员使用您的类时,他会从javadoc中了解到您的类是可编辑的。

答案 5 :(得分:-1)

所有空接口都不是标记接口...如果在运行时为其实现类提供功能的底层服务器或容器称为标记接口。 例如。可运行的界面 Run()方法为其实现类线程提供功能。 可运行的功能以及标记界面。