道歉的垃圾標題,如果有這個問題的條款,請改變它!謝謝。Automagic給對象一個id並通過所述id引用它的方式?
如何清理我的代碼中的以下「模式」以更加自動化。通過這個我的意思是我可以創建一個擴展Foo的新對象,而不必爲該對象創建Foo的靜態字段成員並將其添加到散列表。
class Foo {
protected int id;
public Foo(int id) { this.id = id; }
public static final int BAR = 0;
public static final int QUX = 1;
public static HashMap<Integer, Foo> FOOS = new HashMap<>();
static {
FOOS.put(BAR, new Bar());
FOOS.put(QUX, new Qux());
}
}
class Bar extends Foo {
public Bar() { this(Foo.BAR); }
}
class Qux extends Foo {
public Qux() { this(Foo.QUX); }
}
我的主要要求是,我可以很容易地解決每一個對象通過它的ID,即沒有神奇數字:
someArray[randomIndex] = Foo.BAR;
但是他們仍然需要有一個整數,這樣我就可以把在一個隨機數,它可以做一個查找它所引用的對象:一個有點hackish
for (int i : someArray) {
// for simplicity pretend that all the values
// in someArray are all valid keys for the FOOS hashmap
System.out.println(Foo.FOOS.get(i).id);
}
你能設計一個完美的'hashCode()'嗎? –