A marker interface in Java is an interface that contains no method declarations. We can call this a “marker” because it “marks” a Java class so that JVM can identify it in some way. Marker interfaces are useful in certain situations but they have some limitations that we should use with caution.
Limitation of marker interface
Following are the some limitations of marker interfaces in Java:
- They do not provide any implementation details: Because marker interfaces contain no method declarations, they do not specify any implementation details. This means that a class that implements a marker interface must have the desired behavior already implemented, or it must implement the necessary methods itself.
- They are not very flexible: Because marker interfaces do not contain any method declarations, they are not very flexible. If a class needs to implement a certain behavior, it must either already have that behavior or implement the necessary methods itself.
- They do not ensure that the implementation behavior is correct: If a class implements a marker interface, it is up to the programmer to ensure that the class actually has the behavior that we want. If the implementation behavior is not correct, the class will not function as expected.
List of marker interfaces in Java
Here is a list of marker interfaces available in Java:
Serializable: This interface marks a Java class as being able to convert into a stream of bytes. So that it will be easier to persist and implement the stream for further processing.
Cloneable: To clone or copy a Java class, this marker interface marks a Java class as a clonable (i.e., copiable). However, it does not specify how the object is going to be cloned.
Remote: This interface marks a Java class as being able to be a remote object so that this class will be called by a client over a network.
EventListener: This interface is the common parent interface for all event listener interfaces in the Java class libraries. It does not contain any method declarations.
RandomAccess: This interface is implemented by
Listimplementations that support fast (constant time) random access.
The marker interface in Java can be useful in certain situations. But they should be used with caution. It is often better to use a regular interface that contains method declarations. Since this allows for more flexibility and ensures that the necessary behavior is properly implemented.