Ich habe ein Graph Objekte mit Knoten. Ich brauche Annotationsobjekte, die für jeden Knoten beliebige Eigenschaften enthalten. Wenn ein Knoten eine Eigenschaft vom Typ T hat, haben alle anderen Knoten eine Eigenschaft dieses Typs. Annotator-Objekt fügt der Anmerkung dann Eigenschaften hinzu. Dies hält mein Diagramm agnostisch. Es gibt Code zum Hinzufügen einer Eigenschaft eines bestimmten Typs zu einem Knoten und Code zum Abrufen einer Eigenschaft nach Typ.Java Graph Annotation Eigenschaften Muster
Hier ist der Code, den ich zur Zeit in meiner Annotation-Klasse haben:
private Map<Class<? extends Property>, Map<Node, Property>> properties;
@SuppressWarnings("unchecked")
public <T extends Property> T getProperty(Node node, Class<T> clazz) {
if (properties.containsKey(clazz)) {
return null;
}
return (T) properties.get(clazz).get(node);
}
public void addProperty(Node node, Property property) {
if (!properties.containsKey(property.getClass())) {
properties.put(property.getClass(), new HashMap<>());
}
properties.get(property.getClass()).put(node, property);
}
Ich glaube, das funktioniert gut, aber die Generika, wie sie nur sein nicht so streng scheinen könnte. Gibt es ein eleganteres Muster, das ich verwenden könnte?
danke!
Dank, Ill diese Verbesserungen machen! –