Вы можете использовать:
Class c = Class.forName("com.package.MyClass");
А позже создать экземпляр объекта:
Object obj = c.newInstance();
РЕДАКТИРОВАТЬ: Это самый простой вариант использования. Как указано в комментариях, вам нужно будет учитывать аргументы конструктора и исключения, создаваемые процессом инициализации. В JavaDocs для newInstance
есть все подробности.
Похоже, вы могли бы использовать статический метод forName
Class
class . Также стоит отметить, что приведенные выше предложения верны, но будут работать только для конструкторов по умолчанию (без параметров). Вы также можете сделать что-то вроде:
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);
}