我試圖保持以下方式(這可能是錯誤的本質)節點屬性:通用對象的集合。自動鑄造?隱藏的鑄造?
public class Property<T> {
protected String key;
protected T value;
public Property(String key, T value) {
this.key = key;
this.value = value;
}
}
public class Node {
protected HashMap<String,Property> properties;
public Node() {
properties = new HashMap<>();
}
然而,這使我鑄造的巨型亂七八糟的不幸的副作用。我一直在閱讀所有可能相關的內容,但似乎沒有解決essentail問題。這是我目前的想法:
public void add(String key, Object value) {
if (! (value instanceof Property)) {
value = new Property<>(key, value);
}
properties.put(key, (Property)value);
}
public long get(String key, long x) {
return (long)properties.get(key).value;
}
public long[] get(String key, long[] x) {
return (long[])properties.get(key).value;
}
public String get(String key, String x) {
return (String)properties.get(key).value;
}
// etc
現在,這顯然是incrediably愚蠢,但我兜兜轉轉試圖簡單地能夠通過鑰匙搶到節點屬性,並根據按鍵可以放心它的類型。
就這麼簡單。 給定的密鑰必須對應給定類型,既可用於添加也可用於獲取。
我真的覺得我誤解了Java的本質。
您是否必須使用字符串鍵,或者自定義類型是否可以接受? –
自定義類型可能沒問題。字符串鍵是任意的。 –