我使用Class.forname()使用以下代码动态创建实例:
String className = "models." + category;
Class c = Class.forName(className);
Object tuple = c.newInstance();
但在那之后,我发现我不能在课堂上调用一些方法。我不能使用tuple.setName()或其他方法。
如何声明类c可以在java中调用某些方法?
答案 0 :(得分:3)
您应该有一个可以将该类投射到的界面:
MyInterface tuple = (MyInterface) c.newInstance();
tuple.setName("Bilbo");
如果失败,你需要继续使用反射:
Method setName = c.getMethod("setName", String.class);
setName.invoke(tuple, "Bilbo");