У меня есть интерфейс «Родительский» и несколько классов (скажем, Abc.java, Def.java и Xyz.java), реализующие интерфейс. Теперь я хочу сделать что-то вроде этого:Определение реализации класса на основе некоторых условий в Java
Parent factoryMethod(String condition){
Parent p = null;
if(condition.equals("Abc"))
p = new Abc();
else if(condition.equals("Def"))
p = new Def();
else if(condition.equals("Xyz"))
p = new Xyz();
return p;
}
В основном я передаю имя класса, который будет экземпляр в качестве параметра метода. Каков наилучший способ сделать это? Должен ли я использовать рефлексию для этого? Его не только 3 класса, может быть намного больше. Поэтому я не хочу писать if/else.
Спасибо.
Вы уверены, что ** все ** классы реализации имеют конструктор по умолчанию (без параметров) (неявный или явный)? –
Если да, то комментарий @ PM77-1, я бы предложил отражение в этом сообщении: http://stackoverflow.com/questions/14680954/instantiate-java-classes-which-implements-specific-interface-using-reflection – ThePerson
Вы уже делаете это так, как я предлагаю. –