【问题标题】:Java: Using Dynamically loaded classesJava:使用动态加载的类
【发布时间】:2011-02-19 22:41:12
【问题描述】:

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

谢谢

【问题讨论】:

  • 你能用例子说明你的意思吗?

标签: java reflection class dynamic load


【解决方案1】:

给定

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

【讨论】:

    【解决方案2】:

    是的,您可以使用Class 类。

       public InterfaceType getDynamicClass(String className) {
           return (InterfaceType) Class.forName(className).newInstance();
       }
    

    接口是为了保证方法存在。当然,您必须注意异常并为您的应用程序适当地处理它们。

    【讨论】:

      【解决方案3】:

      嗯,你会想要使用接口或者你继承的基类。这样,您可以在运行时调用您正在创建的对象的一组预定义方法。

      要做到这一点,您可能必须使用反射来创建基于(文本?)输入的实例。

      【讨论】:

      • 是的,我同意 tylermac ;)
      猜你喜欢
      • 2011-11-05
      • 2011-04-04
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      相关资源
      最近更新 更多