Hallo,
ist es irgendwie möglich ein Enum austauschbar zu machen? Irgendwie durch ein Service Provider Interface oder so etwas? Ich hab die essentiellen Methoden, die jede Enum-Konstante implementieren muss in ein Interface ausgelagert.
Bspw. will ich Knoten in einer Baumstruktur serialisieren/deserialisieren:
Allerdings will ich die Knotentypen austauschbar machen, d.h. die ganze enum-Klasse. Wie macht man sowas? Kind implementiert NodeKind für serialize(...), deserialize(...), getId(). Vielleicht mit einem Parameter Class<? extends NodeKind> irgendwo als Parameter (Class<? extends Enum<?> & NodeKind> ist ein Syntaxfehler). Und dann beim serialisieren bspw. über getEnumConstants iterieren und schauen wann die Konstante == nodeKind Konstante ist und dann .serialize(...) aufrufen?
Vielen Dank,
Johannes
ist es irgendwie möglich ein Enum austauschbar zu machen? Irgendwie durch ein Service Provider Interface oder so etwas? Ich hab die essentiellen Methoden, die jede Enum-Konstante implementieren muss in ein Interface ausgelagert.
Bspw. will ich Knoten in einer Baumstruktur serialisieren/deserialisieren:
Java:
for (final NodeBase node : mNodes.values()) {
final Kind nodeKind = node.getKind();
final byte id = nodeKind.getId();
out.writeByte(id);
nodeKind.serialize(out, node, mPageReadTrx);
}
Java:
for (int offset = 0; offset < size; offset++) {
final byte id = in.readByte();
final Kind enumKind = Kind.getKind(id);
final NodeBase node = enumKind.deserialize(in, pageReadTrx);
mNodes.put(node.getNodeKey(), node);
}
Allerdings will ich die Knotentypen austauschbar machen, d.h. die ganze enum-Klasse. Wie macht man sowas? Kind implementiert NodeKind für serialize(...), deserialize(...), getId(). Vielleicht mit einem Parameter Class<? extends NodeKind> irgendwo als Parameter (Class<? extends Enum<?> & NodeKind> ist ein Syntaxfehler). Und dann beim serialisieren bspw. über getEnumConstants iterieren und schauen wann die Konstante == nodeKind Konstante ist und dann .serialize(...) aufrufen?
Vielen Dank,
Johannes