Если у вас есть полное имя класса в String
, используйте Class#forName()
и Class#newInstance()
.
Object o = Class.forName("com.example.Foo").newInstance();
Однако для этого необходимо, чтобы класс уже присутствовал в пути к классам и имел (неявный) конструктор по умолчанию.
Если это не так, и у вас есть местоположение класса в URL
, тогда используйте URLClassLoader
и передайте его другому Class#forName()
метод, который принимает его в качестве аргумента.
URL url = getItSomehow();
URLClassLoader classLoader = URLClassLoader.newInstance(new URL[] { url });
Object o = Class.forName("com.example.Foo", true, classLoader).newInstance();
Или, если вместо этого у вас есть File
, то сначала конвертируйте его в URL
:
File file = getItSomehow();
URL url = file.toURI().toURL();
// Continue with URLClassLoader.