Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:使用动态加载的类_Java_Reflection_Class_Dynamic_Load - Fatal编程技术网

Java:使用动态加载的类

Java:使用动态加载的类,java,reflection,class,dynamic,load,Java,Reflection,Class,Dynamic,Load,我是java新手。 我试图在我的应用程序中使用一些动态加载的类。 应用程序不知道类,只是它尝试按名称加载一个来自输入的类。 它不知道类,所以我不能使用casting,但只需要调用该类的一些方法,每个类都应该有这些方法。 我考虑过接口,但不知道如何实现。 我如何调用这些方法 谢谢 Class k = loadMyClassDynamically(); 你可以 Method m = k.getDeclaredMethod("methodName", ArgClass1.class, ArgClas

我是java新手。 我试图在我的应用程序中使用一些动态加载的类。 应用程序不知道类,只是它尝试按名称加载一个来自输入的类。 它不知道类,所以我不能使用casting,但只需要调用该类的一些方法,每个类都应该有这些方法。 我考虑过接口,但不知道如何实现。 我如何调用这些方法

谢谢

Class k = loadMyClassDynamically();
你可以

Method m = k.getDeclaredMethod("methodName", ArgClass1.class, ArgClass2.class);
然后,如果您创建一个k的实例

Object ki = k.getDeclaredConstructor().newInstance();
您可以在ki上调用该方法


有关详细信息,请参阅。

您可能希望使用接口,或者使用从中继承的基类。通过这种方式,您可以调用在运行时创建的对象的预定义方法集

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

是的,你可以使用这个类


接口用于确保方法存在。当然,您必须注意例外情况,并针对您的应用程序适当地处理它们。

您能举例说明您的意思吗?是的,我同意tylermac;
m.invoke(ki, ArgClass3.class, ArgClass4.class);
   public InterfaceType getDynamicClass(String className) {
       return (InterfaceType) Class.forName(className).newInstance();
   }