我在查找如何在使用反射时对动态创建的类进行类型转换时遇到了麻烦.
String s;
...
Class unknownClass = Class.forName(s);
Constructor defaultConstructor = unknownClass.getConstructor(null);
Object retobj = defaultConstructor.newInstance(null);
retobj.Writeout(); // This won't work since;
Run Code Online (Sandbox Code Playgroud)
对象类没有名为Writeout的方法,但这是由此处动态创建的九个其他可能类共享的方法的名称(不用说每个Writeout方法都是单独的事情).有什么建议 ?Thx提前为您的时间.
用反射卢克......
Method writeOutMethod = unknownClass.getMethod("Writeout", new Class[]{});
writeOutMethod.invoke(retobj, new Object[]{});
Run Code Online (Sandbox Code Playgroud)
或者,确保您的对象实现一个众所周知的接口(干净的方法).