У меня есть класс, в котором я инициализировал хэш-карту в статическом блоке. Передав ключ, я получил значение, которое является классом. Чтобы создать объект для этого класса. Я использовал класс конструктора, чтобы получить конструктор, передать аргументы и создать объект.
У меня есть два класса в hashmap. Чтобы создать объект для EchoExpression, мне нужно передать два аргумента, а для класса OutExpression мне нужно передать только один аргумент (строка).
Вопрос:
На основе класса, возвращаемого ключом, мне нужно выполнить, какой конструктор получить и реализовать, будь то конструктор с одним аргументом или с двумя аргументами.
public class ExampleFactory {
private static HashMap<String,Class<?>> hmap = new HashMap<String,Class<?>>();
static
{
hmap.put("echo", EchoExpression.class);
hmap.put("Out", OutExpression.class);
}
public void getExpo(String key,String expression)
{
Class aClass =map.get(key);
//Constructor implementation for OutExpression where only one argument string is passed
Constructor constructor = aClass.getConstructor(new Class[]{String.class});
Object object= constructor.newInstance(expression);
//constructor for passing two arguments string for EchoExpression
Constructor constructor = aClass.getConstructor(new Class[]{String.class,Class.class});
Object object= constructor.newInstance(expression, Boolean.class);
return null;
}
}
Как выбрать из значения (класса), какой класс реализовать, не используя if else?