
- Java - Home
- Java - Overview
- Java - History
- Java - Features
- Java Vs. C++
- JVM - Java Virtual Machine
- Java - JDK vs JRE vs JVM
- Java - Environment Setup
- Java - Hello World Program
- Java - Comments
- Java - Basic Syntax
- Java - Variables
- Java - Data Types
- Java - Type Casting
- Java - Unicode System
- Java - User Input
- Java - Date & Time
Java Operators
- Java - Operators
- Java - Arithmetic Operators
- Java - Assignment Operators
- Java - Relational Operators
- Java - Logical Operators
- Java - Bitwise Operators
- Java Operator Precedence & Associativity
- Java - Unary Operators
Java Control Statements
- Java - Decision Making
- Java - If Else Statement
- Java - Switch Statement
- Java - Loop Control
- Java - For Loop
- Java - For-Each Loop
- Java - While Loop
- Java - Do While Loop
- Java - Break Statement
- Java - Continue Statement
Object Oriented Programming
- Java - OOPs Concepts
- Java - Object & Classes
- Java - Class Attributes
- Java - Class Methods
- Java - Methods
- Java - Variables Scope
- Java - Constructors
- Java - Access Modifiers
- Java - Inheritance
- Java - Aggregation
- Java - Polymorphism
- Java - Overriding
- Java - Method Overloading
- Java - Dynamic Binding
- Java - Static Binding
- Java - Instance Initializer Block
- Java - Abstraction
- Java - Encapsulation
- Java - Interfaces
- Java - Packages
- Java - Inner Classes
- Java - Static Class
- Java - Anonymous Class
- Java - Singleton Class
- Java - Wrapper Classes
- Java - Enums
- Java - Enum Constructor
- Java - Enum Strings
Java Built-in Classes
- Java - Number
- Java - Boolean
- Java - Characters
- Java - Arrays
- Java - Multi-Dimensional Arrays
- Java - Final Arrays
- Java - Math Class
Java File Handling
- Java - Files
- Java - Create a File
- Java - Write to File
- Java - Read Files
- Java - Delete Files
- Java - Directories
- Java - I/O Streams
Java Error & Exceptions
- Java - Exceptions
- Java - try-catch Block
- Java - try-with-resources
- Java - Multi-catch Block
- Java - Nested try Block
- Java - Finally Block
- Java - throw Exception
- Java - Exception Propagation
- Java - Built-in Exceptions
- Java - Custom Exception
Java Multithreading
- Java - Multithreading
- Java - Thread Life Cycle
- Java - Creating a Thread
- Java - Starting a Thread
- Java - Joining Threads
- Java - Naming Thread
- Java - Thread Scheduler
- Java - Thread Pools
- Java - Main Thread
- Java - Thread Priority
- Java - Daemon Threads
- Java - Thread Group
- Java - Shutdown Hook
Java Synchronization
- Java - Synchronization
- Java - Block Synchronization
- Java - Static Synchronization
- Java - Inter-thread Communication
- Java - Thread Deadlock
- Java - Interrupting a Thread
- Java - Thread Control
- Java - Reentrant Monitor
Java Networking
- Java - Networking
- Java - Socket Programming
- Java - URL Processing
- Java - URL Class
- Java - URLConnection Class
- Java - HttpURLConnection Class
- Java - Socket Class
- Java - Generics
Java Collections
Java Interfaces
- Java - List Interface
- Java - Queue Interface
- Java - Map Interface
- Java - SortedMap Interface
- Java - Set Interface
- Java - SortedSet Interface
Java Data Structures
Java Collections Algorithms
Advanced Java
- Java - Command-Line Arguments
- Java - Lambda Expressions
- Java - Sending Email
- Java - Applet Basics
- Java - Javadoc Comments
- Java - Autoboxing and Unboxing
- Java - File Mismatch Method
- Java - REPL (JShell)
- Java - Multi-Release Jar Files
- Java - Private Interface Methods
- Java - Inner Class Diamond Operator
- Java - Multiresolution Image API
- Java - Collection Factory Methods
- Java - Module System
- Java - Nashorn JavaScript
- Java - Optional Class
- Java - Method References
- Java - Functional Interfaces
- Java - Default Methods
- Java - Base64 Encode Decode
- Java - Switch Expressions
- Java - Teeing Collectors
- Java - Microbenchmark
- Java - Text Blocks
- Java - Dynamic CDS archive
- Java - Z Garbage Collector (ZGC)
- Java - Null Pointer Exception
- Java - Packaging Tools
- Java - Sealed Classes
- Java - Record Classes
- Java - Hidden Classes
- Java - Pattern Matching
- Java - Compact Number Formatting
- Java - Garbage Collection
- Java - JIT Compiler
Java Miscellaneous
- Java - Recursion
- Java - Regular Expressions
- Java - Serialization
- Java - Strings
- Java - Process API Improvements
- Java - Stream API Improvements
- Java - Enhanced @Deprecated Annotation
- Java - CompletableFuture API Improvements
- Java - Marker Interface
- Java - Streams
- Java - Datetime Api
- Java 8 - New Features
- Java 9 - New Features
- Java 10 - New Features
- Java 11 - New Features
- Java 12 - New Features
- Java 13 - New Features
- Java 14 - New Features
- Java 15 - New Features
- Java 16 - New Features
Java APIs & Frameworks
Java Class References
- Java - Scanner
- Java - Arrays
- Java - Strings
- Java - Date
- Java - ArrayList
- Java - Vector
- Java - Stack
- Java - PriorityQueue
- Java - LinkedList
- Java - ArrayDeque
- Java - HashMap
- Java - LinkedHashMap
- Java - WeakHashMap
- Java - EnumMap
- Java - TreeMap
- Java - IdentityHashMap
- Java - HashSet
- Java - EnumSet
- Java - LinkedHashSet
- Java - TreeSet
- Java - BitSet
- Java - Dictionary
- Java - Hashtable
- Java - Properties
- Java - Collection
- Java - Array
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.

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