Я работаю над java-приложением. Модель абстрактного класса и 2 производных класса Model 1 и Model 2. Model1 и Model2 ведут себя по-разному, поэтому я хочу разрешить пользователю выбирать модель из двух. Он может быть реализован как:Java, список классов
Model model;
If(response==1){
model = new Model1();
}else if(response==2){
model = new Model2();
}
Теперь проблема состоит в том, что если я добавить новый класс Model3, я должен переписать код. Я мог бы создать список, где я бы добавил экземпляр из каждого класса, тогда я бы добавил статический метод, который вернет новый экземпляр класса, но я надеюсь, что это может быть сделано с бит более стильным.
Возможно ли создать список, чтобы удерживать типа каждого класса. Из этого списка я мог бы создать меню для выбора модели, а затем использовать этот тип для создания класса, который нужен пользователю.
Возможно ли создать List<Class>
, а затем использовать объект класса как конструктор для создания экземпляра данного класса?
+1 для не использующего отражение.Иногда вам приходится, хотя (если вы не знаете класс во время компиляции, например) –
@StevenSchlansker, я согласен, что есть использование для отражения. Я предпочитаю ограничивать его границ между объектными системами Java и другими системами - файловой системой, ORM, встроенными скриптовыми языками. Если вы полностью работаете в Java, часто есть лучший способ использовать его, что не влияет на способность ретрансляторов координировать, следовать потоку программы и т. Д. –