2014-11-16 30 views
-1

標記接口是一個沒有任何成員的接口。而可序列化就是一個例子。java中的標記接口到底是什麼?

我們可以定義我們自己的標記接口嗎?如果是,我們如何定義它的功能?

+0

您可以自由,只要編譯器不會抱怨界定什麼? – Kartic

+1

http://stackoverflow.com/questions/25850328/marker-interfaces-in-java – BatScream

回答

0

標記接口用作標記來通知消息給java編譯器,以便它可以爲實現它的類添加特殊行爲。

Java標記接口中沒有成員。

Ex。 1. java.io.Serializable是標記接口。

  • java.lang.Cloneable
  • 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) { 
          ... 
         } 
        } 
    } 
    
    4

    Marker interface pattern(從維基百科的文章)提供元數據類,其中語言沒有這樣的元數據的明確支持相關聯的一種手段。例如java.io.Serializable。一個類實現Serializable接口,以指示其非瞬態數據成員可寫入ObjectOutputStream

    0

    如果您仔細觀察Java中的標記接口,例如可串行化,可Clonnable和遠程它看起來它們用於向編譯器或JVM指示某些東西。因此,如果JVM看到一個Class是Serializable,它就對它做了一些特殊的操作,類似的方式如果JVM看到一個Class是Clonnable,它執行一些操作來支持克隆。 RMI和遠程接口也是如此。在最簡單的標記界面中,向編譯器或JVM發出信號或命令。

    - >實際上,我們可以創建一個接口,如標記接口,但沒有方法聲明,但它根本不是標記接口,因爲它並不指示JVM在我們的程序中爲類提供某些特殊行爲將要執行。

    例如:Serializable接口,Cloneable的etc..are標記接口

    當我的程序得到exceuted,JVM提供了一些特殊的權力,以我的課已經實施了標記接口。

    0

    標記接口用作標記來通知消息給java編譯器,以便它可以爲實現它的類添加特殊行爲。 Java標記接口中沒有成員。
    java.io.Serializable是一個標記接口。對這個接口進行類型化的意思是類似於以某種方式表示java編譯器,以至於有可能序列化這個java類。
    您可以創建自己的標記界面。只需創建一個界面,不需要在內部寫任何東西
    假設你已經創建了Editable標記接口,並創建了很多實現這個Editable的類,當一些程序員使用你的類時,他會從javadoc知道你的類是可編輯的。