Java:使用动态加载的类

时间:2010-05-15 18:53:53

标签: java reflection class dynamic load

我是java的新手。 我正在尝试在我的应用程序中使用一些动态加载的类。 应用程序不知道类,只是它尝试按名称加载一个类,其名称来自输入。 它不知道类(所以我不能使用转换)但只需要调用该类的一些方法(每个类都应该有该方法)。 我想过接口,但我不知道如何。 我该如何称呼这些方法?

由于

3 个答案:

答案 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?)输入的实例。