我使用Class.forname()通过以下代码动态创建实例:

String className = "models." + category;
Class c = Class.forName(className);
Object tuple = c.newInstance();


但是之后,我发现无法在类中调用某些方法。我不能使用tuple.setName()或其他方法。

如何声明类c可以调用Java中的某些方法?

最佳答案

您应该具有一个可以将该类强制转换为的接口:

 MyInterface tuple =  (MyInterface) c.newInstance();
 tuple.setName("Bilbo");


如果失败,则需要继续使用反射:

 Method setName = c.getMethod("setName", String.class);
 setName.invoke(tuple, "Bilbo");

10-08 16:18