我是java的新手。 我正在尝试在我的应用程序中使用一些动态加载的类。 应用程序不知道类,只是它尝试按名称加载一个类,其名称来自输入。 它不知道类(所以我不能使用转换)但只需要调用该类的一些方法(每个类都应该有该方法)。 我想过接口,但我不知道如何。 我该如何称呼这些方法?
由于
答案 0 :(得分:4)
鉴于
Class k = loadMyClassDynamically();
你可以
Method m = k.getDeclaredMethod("methodName", ArgClass1.class, ArgClass2.class);
然后,如果你创建一个k
的实例Object ki = k.getDeclaredConstructor().newInstance();
您可以在ki
m.invoke(ki, ArgClass3.class, ArgClass4.class);
有关详细信息,请参阅the reflection tutorial。
答案 1 :(得分:3)
是的,您可以使用Class类。
public InterfaceType getDynamicClass(String className) {
return (InterfaceType) Class.forName(className).newInstance();
}
接口是为了确保方法存在。当然,您必须注意异常并根据您的应用适当处理它们。
答案 2 :(得分:0)
那么你想要使用接口或继承的基类。这样,您可以在运行时调用正在创建的对象的预定义方法集。
为了达到这个目的,你可能不得不使用反射来创建基于(text?)输入的实例。