我很难找到如何在使用反射时对动态创建的类进行类型转换。
String s;
...
Class unknownClass = Class.forName(s);
Constructor defaultConstructor = unknownClass.getConstructor(null);
Object retobj = defaultConstructor.newInstance(null);
retobj.Writeout(); // This won't work since;
对象类没有称为Writeout的方法,但该方法的名称由此处动态创建的其他九个可能的类共享(不必说每个Writeout方法都做单独的事情)。有什么建议 ?在您的时间提前。
最佳答案
使用反射卢克...
Method writeOutMethod = unknownClass.getMethod("Writeout", new Class[]{});
writeOutMethod.invoke(retobj, new Object[]{});
或者,确保您的对象实现一个众所周知的接口(干净的方法)。
关于java - 如何转换通过反射创建的对象以运行方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10539094/