Marker

Origin: Grand 98 (but there are many earlier examples in the Java APIs)
Reason: A class needs a semantic attribute, but no specific members.
Synopsis: Define an empty interface, M. Say that a class implements interface M.
Example: How can one mark a class, C, whose objects are equal only if they are the same object (and, thus, use == instead of equals for comparison).
Solution:
Marker An interface (trivially) implemented by class C. e.g., EqualByIdentity.
See also: Java API interfaces java.io.Serializable and java.rmi.Remote for classic examples.