Я следую этой статье о Oracle Network, чтобы реализовать MVC при разработке настольных приложений.
У меня проблема: я использую абстрактный класс 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, которые идентифицируют
формальные типы параметров метода,
в заявленном порядке.
Так что я предполагаю, что это проблема.