# Flag in Java



## sengul (4. Sep 2017)

Hallo,
ich finde nicht heraus was mit *flag* gemeint ist. Was hat das zu bedeuten *Flags *in Java? Für was wird das gebraucht? Es ware nett wenn ihe es an einem Beispiel erklart. 
Vielen Dank


----------



## mrBrown (4. Sep 2017)

In welchem Kontext denn?


----------



## CSHW89 (4. Sep 2017)

Allgemein in der Programmierung: https://de.wikipedia.org/wiki/Flag_(Informatik)
Speziell: kommt, wie mrBrown schon sagte, auf den Kontext an.


----------



## MarzAttak (5. Sep 2017)

Hmmmjaa...
Ein Flag ist allgemein - wenn ich das richtig sehe - ganz banal ein Schalter, der einen Status speichert/darstellt: ja/nein; an/aus; Flags wurden früher oft in einzelnen Bits gesetzt weil das schön speichersparend war.
In Java gibt es unterschiedliche Möglichkeiten um sowas darzustellen: boolesns, Marker-Interfaces... sicherlich gibt es auch irgendwo die Möglichkeit der Bytemanipulation... wie hier schon gesagt wurde, je nach Kontext


----------



## mrBrown (5. Sep 2017)

MarzAttak hat gesagt.:


> Marker-Interfaces


Die aber ganz zurecht verpönt sind


----------



## MarzAttak (5. Sep 2017)

mrBrown hat gesagt.:


> Die aber ganz zurecht verpönt sind


Serializable ist verpönt????


----------



## CSHW89 (6. Sep 2017)

Marker-Interfaces werden vererbt, was nicht immer gewünscht ist. Wenn A Serializable ist, muss es nicht bedeuten, dass man eine erbene Klasse B auch Serializable haben möchte. Heute würde man dies mit einer Annotation erledigen. Am besten noch die "magische" Variable "serialVersionUID" zu einem Parameter der Annotation umfunktionieren.


----------



## Flown (6. Sep 2017)

MarzAttak hat gesagt.:


> Serializable ist verpönt????


Serializable ist nicht wirklich verpönt. Es stammt aus einer Ära, da gab es nur die Möglichkeit Metadaten mittels Marker-Interfaces hinzuzufügen.
Marker Interfaces sind dazu verwendet worden der/dem JVM/Compiler Zusatzinfos zu liefern.


----------



## MarzAttak (6. Sep 2017)

Ich war mur verwirrt, weil in der Literatur, die ich habe, Serializable für die Objektserialisierung quasi als einzige Option angeboten wird. Die Alternativen muss ich mir erst mal ansehen. Sorry ich wollte den Thread nicht kapern.


----------



## MarzAttak (6. Sep 2017)

CSHW89 hat gesagt.:


> Marker-Interfaces werden vererbt, was nicht immer gewünscht ist. Wenn A Serializable ist, muss es nicht bedeuten, dass man eine erbene Klasse B auch Serializable haben möchte. Heute würde man dies mit einer Annotation erledigen. Am besten noch die "magische" Variable "serialVersionUID" zu einem Parameter der Annotation umfunktionieren.


Ich hoffe, ich mache mich nicht unbeliebt indem ich hier nicht weiter über Flags rede, aber ich schnalle das noch nicht und habe im Web auf Anhieb nichts gefunden. Gibt es irgendwo eine Anleitung oder ein Beispiel, wie das funktioniert?


----------



## mrBrown (6. Sep 2017)

MarzAttak hat gesagt.:


> Ich hoffe, ich mache mich nicht unbeliebt indem ich hier nicht weiter über Flags rede, aber ich schnalle das noch nicht und habe im Web auf Anhieb nichts gefunden. Gibt es irgendwo eine Anleitung oder ein Beispiel, wie das funktioniert?


Es gibt nicht *die eine* Alternative 
JAXB, Jackson, GSON gibts zB, die lösen das mit Annotations und serialisieren zu XML bzw JSON


----------



## looparda (6. Sep 2017)

MarzAttak hat gesagt.:


> Ich hoffe, ich mache mich nicht unbeliebt indem ich hier nicht weiter über Flags rede, aber ich schnalle das noch nicht und habe im Web auf Anhieb nichts gefunden. Gibt es irgendwo eine Anleitung oder ein Beispiel, wie das funktioniert?


Das Marker-Interface wurde/konnte aus Kompatibilitätsgründen in Java 5 nicht abgeschafft werden. Es gibt keine Annotation, die dem Serializable Marker-Interface entspricht - jedenfalls ist mir keine bekannt. Hier müsste CSHW89 nochmal erklären ob das ein Implementierungsvorschlag ist oder es bereits durch Librarys zur Verfügung steht.


----------



## CSHW89 (6. Sep 2017)

Oh tut mir leid, das war wohl unverständlich. Ich meinte damit eher: wenn man heutzutage Java neu erfinden könnte, würde es nicht über Marker-Interface implementiert werden, sondern über Annotations. Die gab es aber in Java 1 noch nicht.


----------

