Content deleted Content added
Gyanauce2006 (talk | contribs) →References: Added a Section on Use Cases of Maker Interfaces Tags: Reverted Visual edit |
m Reverted edit by Gyanauce2006 (talk) to last version by Citation bot |
||
Line 26:
</syntaxhighlight>A class implements this interface to indicate that its non-[[Transient (computer programming)|transient]] data members can be written to an {{Javadoc:SE|java/io|ObjectOutputStream}}. The <code>ObjectOutputStream</code> private method <code>writeObject0(Object,boolean)</code> contains a series of <code>instanceof</code> tests to determine writeability, one of which looks for the <code>Serializable</code> interface. If any of these tests fails, the method throws a <code>NotSerializableException</code>.
▲== Critique ==
A major problem with marker interfaces is that an interface defines a contract for implementing classes, and that contract is inherited by all subclasses. This means that you cannot "unimplement" a marker. In the example given, if you create a subclass that you do not want to serialize (perhaps because it depends on transient state), you must resort to explicitly throwing <code>NotSerializableException</code> (per <code>ObjectOutputStream</code> docs)
Line 48 ⟶ 37:
==References==
{{Reflist}}
== Further reading ==
|