在开发桌面应用程序时,我在Oracle
Network上关注本文以实现MVC。但是,我有一个问题:我正在使用由和扩展的抽象
Directory 类。模型管理器方法之一接受Directory作为参数:SimpleDirectory``WildcardDirectory
public void addDirectoryDummy(Directory d){
System.out.println("Hello!");
}
抽象控制器使用setModelProperty调用此方法:
protected void setModelProperty(String propertyName, Object newValue) {
for (AbstractModel model: registeredModels) {
try {
Method method = model.getClass().
getMethod(propertyName, new Class[] {
newValue.getClass()
}
);
method.invoke(model, newValue);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
我从实际的控制器中这样调用它:
public void dummy( Directory d){
setModelProperty( BACKUP_DUMMY, d );
}
我认为我有:
this.controller.dummy( new SimpleDirectory(0,"ciao") );
我有以下错误:
java.lang.NoSuchMethodException: it.univpm.quickbackup.models.BackupManager.addDirectoryDummy(it.univpm.quickbackup.models.SimpleDirectory)
at java.lang.Class.getMethod(Class.java:1605)
我该如何解决这个问题?我在使用时缺少一些东西getMethod。
编辑:我已经阅读了文档,并在getMethod其中说
parameterTypes参数是Class对象的数组,这些Class对象按声明的顺序标识方法的形式参数类型。
所以我想这就是问题所在。