Звучит так, будто ваш дизайн, возможно, стоит рассмотреть. Несколько предложений:
- Добавьте метод init в ваше перечисление. Так
тогда вы можете перебирать массив
ваших перечислений и позвонить в init
метод, так что перечисление знает, как
сделать свою собственную инициализацию
- создать объект Command, который делает
инициализация и создать
Карта вашего перечисления в качестве ключа и
Команда в качестве значения. цикл
вокруг карты, управляющей Командой
за каждое перечисление.
- Используйте рефлексию - с точки зрения затрат, я бы не стал слишком беспокоиться об этом, если ваша система не работает с невероятно низкой задержкой
Для первого маркера вы можете изменить TextBox, чтобы он содержал тип поля, например
TextBox A = new TextBox(Field.A);
TextBox B = new TextBox(Field.B);
Так что, если TextBox знает, что это A, B, C, D, E, тогда вам просто нужно обойти ваше Field [], и когда он найдет свое преобразование TextBox, запустите код инициализации (который может быть сохранен для конкретного экземпляра enum). ). Конечно, вам нужно будет где-то зарегистрировать все ваши экземпляры TextBox в структуре данных, так как вы, похоже, очень против использования очень широко используемого API отражения.
По сути, должна быть связь между полем и TextBox. Ява не может читать ваши мысли и знать это без вашего ведома. Ну, по крайней мере, пока Google не представит свой API телепатии (и это, вероятно, будет только для Go ...). Это может быть сделано на основе именования (отражения), жестко закодированной логики (если или переключается) или на основе состояния. Для последнего это означает связывание поля с TextBox, как я продемонстрировал на примере конструктора выше.