У меня есть объект 'Foo Action', который имеет тип FooProcess
(interface) [null object].
Я хочу инициализировать 'Foo Action' как объект подкласса [FooOne
или FooTwo
] из FooProcess
.
Используя Spring Framework, я могу создать ArrayList
FooList
(список имен подклассов FooProcess
), теперь я хотел бы инициализировать FooAction
как один из подклассов. (Учитывая параметр selected
, чтобы определить, какой класс я хочу инициализировать как)
Все подклассы FooProcess
имеют конструктор, который принимает String
.
Моя проблема именно в этой строке
FooAction = component.getClass().getConstructor(f);
Полный метод:
public FooProcess Load(String selected, String f) throws ClassCastException, InstantiationException, IllegalAccessException, ClassNotFoundException{
ArrayList<String> FooList = new ArrayList<String>();
final ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(true);
provider.addIncludeFilter(new AssignableTypeFilter(FooProcess.class));
for (BeanDefinition component : provider.findCandidateComponents("org.project.foomodule.systems")) {
if(selected == component.getBeanClassName()){
FooAction = component.getClass().getConstructor(f);
} }
return FooAction;
}