是否可以动态加载类并将其用作类型?

Ara*_*lho 1 java instantiation classloader

我试图创建一个代码来动态加载一个类,并使用它来创建新的实例和运行强制转换.我可以使用这个方法从新加载的类中创建一个实例:myClass.newInstance();.但我不能用它作为一种类型.例如:myClass myObj = new myClass();它不起作用.有可能以某种方式执行吗?

这是我试图制作的代码:

URL classUrl;
classUrl = new URL("file:///C:/classes/");
URL[] classUrls = { classUrl };
URLClassLoader ucl = new URLClassLoader(classUrls);
Class c = ucl.loadClass("Operation");
Class MyIn = ucl.loadClass("MyInter"); 
Object o = c.newInstance(); //IT WORKS
System.out.println(((MyIn) o).sum(2, 4)); //IT DOES NOT WORK. Message: MyIn cannot be resolved to a type
Run Code Online (Sandbox Code Playgroud)

JP *_*mau 5

由于您在编译时不了解MyIn,因此您不仅需要使用反射来实例化类,还需要调用方法.

有点像:

MyIn.getDeclaredMethod("sum",Integer.TYPE,Integer.TYPE).invoke(o,2,4);
Run Code Online (Sandbox Code Playgroud)

请参阅https://docs.oracle.com/javase/tutorial/reflect/member/methodInvocation.html