Извините за звание мусора, если есть срок для этой проблемы, пожалуйста, измените его! Благодарю.Автоматический способ предоставления объектов id и ссылки на него указанным идентификатором?
Как я могу очистить следующий «узор» в моем коде, чтобы быть более автоматическим. Под этим я подразумеваю, что я могу создать новый объект, который расширяет Foo без необходимости создания статического члена поля Foo для указанного объекта и добавления его в hashmap.
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;
Но они все равно должны иметь целое число, так что я мог бы поместить в случайное число, и это может сделать поиск на объект он ссылается на:
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()'? –