Java Operators

Java Control Statements

Object Oriented Programming

Java Built-in Classes

Java File Handling

Java Error & Exceptions

Java Multithreading

Java Synchronization

Java Networking

Java Collections

Java Interfaces

Java Data Structures

Java Collections Algorithms

Advanced Java

Java Miscellaneous

Java APIs & Frameworks

Java Class References

Java Useful Resources

Marker Interface in Java



In Java, an interface without methods, fields, or constants is known as a Marker interface. The Marker interface is also known as the tagged interface, and this type of interface is used to tag or mark a class, so that the program understands that the class is a special type of class.

Marker interface is a type of empty interface, and the markings are interpreted at runtime by the JVM (Java Virtual Machine), affecting how classes or objects behave without needing explicit method declarations.

Syntax

The following is the syntax of the marketr interface in Java:

public class MyClass implements Marker_Interface_Name {
    // no field and no methods
}

A Marker interface does not have any methods or fields, but provides information about the class in the form of metadata.

What is the role of the Marker Interface?

The Marker interface plays an important role in Java, as it makes Java an extensible and robust language. The Marker interface helps developers to create highly structured, modular systems whose behavior can be customised based on the markers a certain class has.

Marker Interface

Types of Marker Interfaces

The JDK mainly provides three Marker interfaces in Java, which are as follows:

Serializable Interface

The Serializable interface is a type of Marker interface that is defined in the java.io package. In Java, when we need to make a class serializable, we implement the Serializable interface. Then that object of that class can be serialized or deserialized according to the requirement.

In Java, serialization is a process of converting the state of an object into a byte stream. If a class does not implement this interface, attempting to serialize the class will throw a NotSerializableException error.

Syntax

The following is the syntax for the Serializable interface declaration in Java:

package java.io;
public interface Serializable {
}

Example

Below is an example of implementing a Serializable interface in Java:

import java.io.Serializable;
class MyClass implements Serializable { 
    String name = "Welcome to TutorialsPoint";
}

public class Demo { 
    public static void main(String[] args) {
        MyClass obj = new MyClass(); 
        System.out.println("Serializable object is created\n" + obj.name); 
    }
}

Output

Serializable object is created
Welcome to TutorialsPoint

Cloneable Interface

The Cloneable interface is a type of Marker interface that is defined in java.lang package. When a class implements Cloneable, it allows objects of that class to be cloned using the Object.clone() method.

If this interface is not implemented in the class, and we call the clone() method, it will throw the ClassNotSupportedException error.

Syntax

The following is the syntax for the Cloneable Interface declaration in Java:

package java.lang;
public interface Cloneable {
}

Example

Below is an example of implementing a Cloneable interface in Java:

import java.lang.Cloneable;
class MyClass implements Cloneable { 
    String name = "Welcome to TutorialsPoint";
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

public class Demo { 
    public static void main(String[] args) throws Exception {
        MyClass obj1 = new MyClass(); 
        MyClass obj2 = (MyClass) obj1.clone(); 
        System.out.println("Cloneable object is created\n" + obj2.name); 
    }
}

Output

Cloneable object is created
Welcome to TutorialsPoint

Remote Interface

The Remote interface is a type of Marker interface that is defined in java.rmi package. It marks an object as remote, which is accessible by another machine (host machine). An object can be used as a remote after implementing the remote interface.

Syntax

The following is the syntax for the Remote interface declaration in Java:

package java.rmi;
public interface Remote {
}

Example

Below is an example of implementing a Remote interface in Java:

import java.rmi.Remote;
import java.rmi.RemoteException;
interface MyClass extends Remote { 
    String say() throws RemoteException; 
}

class MyClassRMI implements MyClass { 
    public String say() { 
        return "Welcome to TutorialsPoint"; 
    } 
}

public class Demo { 
    public static void main(String[] args) throws Exception {
        MyClass obj = new MyClassRMI(); 
        System.out.println("Remote object is created\n" + obj.say()); 
    }
}

Output

Remote object is created
Welcome to TutorialsPoint

Custom Marker Interface

The Custom interfaces are also empty interfaces. They are created by the user, and it is not a built-in interface like that of the rest of the JDK-provided Marker interfaces.

Syntax

The following is the syntax for the Custom Marker interface declaration in Java:

interface Custome_Marker_Name {
    //custom marker interface
}

Example

Below is an example of implementing a Custom Marker interface in Java:

interface Marker {
}

class MyClass implements Marker {
    // implementing the custom marker
    String msg = "Welcome to TutorialsPoint";
}

public class Demo {
    public static void main(String[] args) {
        MyClass obj = new MyClass();
        System.out.println("Custom Marker object is marked\n" + obj.msg);
    }
}

Output

Custom Marker object is marked
Welcome to TutorialsPoint
Advertisements