Как реализовать следующий псевдокод в Java?Java: Как реализовать переключатель класса?
Object getInstance(Class<?> type)
{
switch (type)
{
case A.class:
return createA(param1, param2);
case B.class:
return createB(param3, param4, param5);
default:
throw new AssertionError("Unknown type: " + type);
}
}
Я знаю, что, вероятно, может осуществить это с помощью Map<Class<?>, Callable<Object>>
(классов отображения к методу, который возвращает объект), но есть более эффективный/читаемый способ сделать это?
ОБНОВЛЕНИЕ: Извините за вводящий в заблуждение псевдокод. Я не хотел подразумевать, что классы имеют конструкторы без аргументов. Каждый класс построен по-разному. Я знаю, что if-else работает, но это не очень хорошо с точки зрения эффективности. Оно включено).
'switch' в Java очень ограничен. Вы можете включить строки и цифры, вот и все. Я не уверен, что буду спорить о том, чтобы использовать имя типа (string) в качестве переключателя .., который оставляет альтернативу переключения от переключателя. – user2864740
@ user2864740 - включите Enums. Невозможно сделать это на объектах вообще. – Krease
@ Крис. Правда, я все еще группирую их вместе с цифрами в голове. Я виню C#:> – user2864740