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)
由于您在编译时不了解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
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |