Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

If a Marker Interface does not have any methods, how does it work?

Tags:

java

interface

I am aware of what marker interface is and when we need to use it. One question is still not clear to me. If a marker interface does not have any method or body, how does it work at runtime?

like image 612
Kamal Avatar asked Dec 27 '10 18:12

Kamal


3 Answers

A marker interface doesn't "work" as such. As the name suggests, it just marks a class as being of a particular type. Some other code has to check for the existence of the marker and do something based on that information.

These days annotations often perform the same role that marker interfaces did previously.

like image 137
Dan Dyer Avatar answered Oct 24 '22 02:10

Dan Dyer


The only useful thing you can do with it is

if (instance instanceof MyMarkerInterface) {
   ...
}
like image 21
Mot Avatar answered Oct 24 '22 02:10

Mot


Marker interfaces can be replaced with annotations in many places, however a marker interfaces can still be used for

  • The compile time checks. You can have a method which must take an object of a class with a given marker interface(s) e.g.

    public void myMethod(MyMarkerInterface MMI);
    

You cannot have this compile time check using an annotation alone.

BTW: You can have two interfaces using generics, but good examples are rare.

  • Support frameworks which depend on interface(s) to identify a component type. like OSGi.

EDIT: I use this for a Listener marker interface. A listener has methods methods marked with annotations but the methods can have any name or type. It adds a compiler time check to what would otherwise be a purely runtime linking.

public Component implements Listener {

@ListenerCallback
public void onEventOne(EventOne... eventOneBatch) { }

@ListenerCallback
public void onEventTwo(EventTwo eventTwo) { }
}
like image 7
Peter Lawrey Avatar answered Oct 24 '22 00:10

Peter Lawrey