Вернуть экземпляр динамического класса

Я пытаюсь создать метод, который получает класс (любой класс) и возвращает экземпляр этого класса. (Это как "весна"). Как я могу сделать с этим кодом?

Главный:

public static void main(String[] args) {
    Factory factoria = new Factory();
    Auto auto = factoria.getObject(Auto.class);
    System.out.println(auto.Motor);
}

Фабричный класс (метод getObject, который я пытаюсь сделать):

public Class<?> getObject(Class<?> clase) throws ClassNotFoundException, InstantiationException, IllegalAccessException{

    Class<?> cls = Class.forName(clase.getName());
    Class<?> objetoRaiz = (Class<?>) cls.newInstance();

    // if @Component
    procesar(objetoRaiz);

    return objetoRaiz;      
}

Всего 1 ответ


Лучше всего использовать конструктор по умолчанию, поскольку он может вызывать исключения и вообще обрабатывать что-либо.

public <T> T createObject(Class<T> type) throws NoSuchMethodException,
        InstantiationException, IllegalAccessException, InvocationTargetException {   
    return type.getConstructor().newInstance();      
}

Или проще на стороне использования:

public <T> T createObject(Class<T> type) throws IllegalArgumentException {   
    try {
        return type.getConstructor().newInstance();      
    } catch (NoSuchMethodException | InstantiationException
            | IllegalAccessException | InvocationTargetException e) {
        throw new IllegalArgumentException(e);
    }
}

Есть идеи?

10000