fujaba / org.fujaba.graphengine

This project's aim is to build a graph engine, that is able to build and compare graphs - and to match patterns and apply actions on the graph, to effectively use it as a graph-transformation framework.
BSD 3-Clause "New" or "Revised" License
1 stars 0 forks source link

changing the type for attributes from Object to ? extends Comparable<?> #7

Closed hoechp closed 7 years ago

hoechp commented 7 years ago

Ich glaube, ohne eine Klasse für diese Attribute anzulegen ist es nicht möglich, dass ? extends Comparable<?> umzusetzen. Beispielsweise eine HashMap<String, ? extends Comparable<?>> kann höchstens mit new HashMap<String, Comparable<?>>() instanziiert werden. Und darauf kann man kein .put("key", "value") aufrufen, selbst wenn man versucht "value" nach Comparable zu casten, da Comparable nunmal ein Interface ist und keine Klasse und alles was von Comparable erbt ist wieder ein Interface und keine Klasse.

Die Lösung wäre entweder bei Object zu bleiben und beispielsweise Exceptions zu werfen, wenn etwas anderes als Integer, Long, Double, Boolean oder String verwendet wird.

Oder alternativ müsste eine Klasse für die Attribute angelegt werden, in der eben etwas wie class Attribute<T> implements Comparable<T> steht.

Soweit ich das sehe, gibt es sonst keine Möglichkeiten - und ich würde eher dazu tendieren, beim einfachen Object zu bleiben...

hoechp commented 7 years ago

Vielleicht könnte man passender Weise auch JsonPrimitive - den Typ von primitiven Werten aus der gson-library - als Attributwert nutzen. Alle dort gültigen Werte sind, soweit ich weiß, Comparable.

hoechp commented 7 years ago

the attribute type will just stay Object for now.