How Marker Interface is handled by JVM

后端 未结 7 695
清歌不尽
清歌不尽 2020-12-09 23:07

Marker interface doesn\'t has any thing. It contains only interface declarations, then how it is handled by the JVM for the classes which implements this marker interface?

7条回答
  •  一个人的身影
    2020-12-09 23:58

    Your question should really be how does the compiler handle marker interfaces, and the answer is: No differently from any other interface. For example, suppose I declare a new marker interface Foo:

    public interface Foo {
    }
    

    ... and then declare a class Bar that implements Foo:

    public class Bar implements Foo {
      private final int i;
    
      public Bar(int i) { this.i = i; }
    }
    

    I am now able to refer to an instance of Bar through a reference of type Foo:

    Foo foo = new Bar(5);
    

    ... and also check (at runtime) whether an object implements Foo:

    if (o instanceof Foo) {
      System.err.println("It's a Foo!");
    }
    

    This latter case is typically the driver behind using marker interfaces; the former case offers little benefit as there are no methods that can be called on Foo (without first attempting a downcast).

提交回复
热议问题