我在这里看到很多关于加载类的反射等等,我只是觉得这不是我想要的。 基本上,我想要的是一种动态加载类的方法。 所以喜欢:loadDynamicClass(“NameFromString”)。onStart();其中onStart()是我尝试加载的每个类中的方法。如果我错过了stackoverflow上的内容,只需将其标记为重复。
答案 0 :(得分:1)
您可以使用Class.forName
方法加载课程。
E.g。
(Cast) Class.forName("fully.qualified.class.Name").newInstance().yourMethod()
(演员) - 可以是yourMethod()
的类型答案 1 :(得分:1)
鉴于这样的课程:
public class Foo
{
public void bar()
{
System.out.println("Foo.bar");
}
public void car()
{
System.out.println("Foo.car");
}
}
和这样的代码:
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Main
{
public static void main(final String[] argv)
throws ClassNotFoundException,
NoSuchMethodException,
InstantiationException,
IllegalAccessException,
IllegalArgumentException,
InvocationTargetException
{
final Class<?> clazz;
final Method method;
final Object instance;
clazz = Class.forName(argv[0]);
method = clazz.getMethod(argv[1] /*, types */);
instance = clazz.newInstance();
method.invoke(instance /*, arguments */);
}
}
您可以这样运行:
java Main Foo bar
java Main Foo car
它将根据需要调用foo或bar方法。