Как получить Объект класса от Имени класса в Java

SELECT * FROM INFORMATION_SCHEMA.COLUMNS
39
задан alkar 17 September 2009 в 12:15
поделиться

4 ответа

Вы можете использовать:

Class c = Class.forName("com.package.MyClass");

А позже создать экземпляр объекта:

Object obj = c.newInstance();

РЕДАКТИРОВАТЬ: Это самый простой вариант использования. Как указано в комментариях, вам нужно будет учитывать аргументы конструктора и исключения, создаваемые процессом инициализации. В JavaDocs для newInstance есть все подробности.

57
ответ дан 27 November 2019 в 02:36
поделиться
Class.forName("MyClass")

Подробнее см. в JavaDoc

7
ответ дан 27 November 2019 в 02:36
поделиться

Похоже, вы могли бы использовать статический метод forName

класса Class class .
3
ответ дан 27 November 2019 в 02:36
поделиться

Также стоит отметить, что приведенные выше предложения верны, но будут работать только для конструкторов по умолчанию (без параметров). Вы также можете сделать что-то вроде:

    public Object newInstance(String className, Object...args) throws Exception {
        Class<?> clazz = Class.forName(className);
        if(args == null || args.length == 0) {
            return clazz.newInstance();
        }

        List<Class<?>> argTypes = new ArrayList<Class<?>>();
        for(Object object : args) {
            argTypes.add(object.getClass());
        }
        Constructor<?> explicitConstructor = clazz.getConstructor(argTypes.toArray(new Class[argTypes.size()]));
        return explicitConstructor.newInstance(args);
    }
2
ответ дан 27 November 2019 в 02:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: