In informatica il pattern marker interface è utilizzato quando è necessario fornire informazioni a runtime su un oggetto. In java una marker interface è sostanzialmente un’interfaccia vuota, ovvero che non dichiara alcun metodo, il che significa che la classe che la estende non deve implementare alcun metodo. L’utilizzo di tale tecnica migliora la leggibilità della classe ed inoltre consente di ereditare tutti i vantaggi del polimorfismo.
Alcune marker interface già esistono nel JDK come le interfacce Serializable
, Clonable
e Remote
, ed indicano alla JVM che gli oggetti devono essere trattati in modo particolare. Ad esempio l’interfaccia Serializable
indica che lo stato dell’oggetto può essere serializzato in uno stream per essere letto o scritto utilizzando le classi ObjectOutputStream
e ObjectInputStream
.
Il codice seguente, as esempio, scrive lo stato dell’oggetto Employee
(che per ipotesi estende Serializable
) su file system come array di byte:
1 2 3 4 5 6 |
Employee employee = new Employee("John","Doe"); FileOutputStream fileOut = new FileOutputStream( "employee.ser" ); ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject(employee); out.close(); fileOut.close(); |