【问题标题】:Null vs Marker Interface空值与标记接口
【发布时间】:2013-06-24 21:45:16
【问题描述】:

谁能详细说明Java中Null接口和Marker接口之间的核心区别是什么。我在一次采访中被问到这个问题。

谢谢。

【问题讨论】:

  • 什么是Null interface?我只知道Void,那是你定义的Null接口吗?
  • marker接口有什么用?我们什么时候应该使用标记或空接口?谁能解释一下?

标签: java marker-interfaces


【解决方案1】:

Null interface 只是 Marker Interface 的另一个名称,反之亦然。据我所知,它们可以互换使用。

这些只是没有方法的接口。标记接口的示例有:SerializableCloneable

【讨论】:

  • marker接口有什么用?我们什么时候应该使用标记或空接口?谁能解释一下?
  • @Ved 它标记类。例如,实现Serializable 的类被标记为具有可序列化对象的类。
  • @AlonsodelArte 好的,知道了
【解决方案2】:

空接口是标记接口的别称。这样的接口是空的,即没有任何方法声明。

例如 java 中的 Serializable、Cloneable 类。在 Java 的早期版本中,标记接口是声明类元数据的唯一方法

【讨论】:

  • 在当前的 Java 中,您可能会改用注解。
【解决方案3】:

空接口是标记接口,它们没有函数声明,它们是空接口,这是为了向编译器传达它们必须被区​​别对待。

【讨论】:

    【解决方案4】:

    空接口是标记接口的例子。

    接口是不同的类型。主要是扩展接口、markble接口和marker接口。

    标记接口和其他的区别是标记接口没有方法..示例是;-可序列化--用于序列化。 remote -- 用于远程方法通信。您的远程接口必须扩展此标记接口。当您的远程接口扩展标记接口时,它被称为扩展接口。

    它们只是告诉编译器这个类的对象需要区别对待。一些标记接口是:Serializable、Remote、Cloneable

    代码:

    interface markerImp 
    {
    
    
    }
    
    class MarkerTest implements markerImp
    {
    
    }
    
    public class TestInstanceOf 
    {
    
    public static void main(String []args)
    {
        MarkerTest mt = new MarkerTest();
        if(mt instanceof markerImp)
    {
        System.out.println("True");
    }
    else
    {
        System.out.println("False");
    }
    }
    }
    

    【讨论】:

      【解决方案5】:

      Null 接口和 Marker 接口是一样的。两者都意味着空接口。 Marker 或 Null 接口没有方法,通过实现该接口对象将获得一些能力。例如,通过实现 Serialisable 接口,我们的对象可以保存到文件中并可以通过网络传输。

      【讨论】:

        猜你喜欢
        • 2018-04-22
        • 2021-07-12
        • 2012-10-28
        • 1970-01-01
        • 1970-01-01
        • 2012-04-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多