我一直在尝试在 java 中做一些“简单的事情”,在 javascript 中看起来像:
// Main class
var model = new Model();
this.callback = function(e){/* do something */}
model.addListener("change", callback);
那么在java中我到目前为止发现的是从java.util.Observer派生的Main类和从java.util.Observable派生的Model;然后,当模型将调度事件时,它将调用 Main 类的 update 方法。我发现真的很丑,一点也不优雅。我什至想不出我该如何处理它;
有没有更清洁和灵活的方法,也许有一些库可以帮助我,因为我还没有找到任何可以接受的关于如何做到这一点的教程?
多谢
好吧,到目前为止我所管理的,我非常喜欢它,而不仅仅是为简单的事件创建“空”类(但仍然不好,至少对我来说):
private ArrayList __items;
public void addListener(Method method, Object object){
this.__listeners.add(new Object[] {method, object});
}
public void dispatch(){
int i = this.__listeners.size();
Method method;
Object context;
while(i>0){
i--;
method = (Method)(this.__listeners.get(i))[0];
context = (Object)(this.__listeners.get(i))[1];
try{
method.invoke(context);
}catch(java.lang.reflect.InvocationTargetException e){
}catch(java.lang.IllegalAccessException e){
}
}
}
然后我这样使用:
Gifts gifts = prendastotty.PrendasTotty.getMain().getLoggedUserGifts();
Class[] parameterTypes = new Class[0];
try{
Method m = Home.class.getMethod("__updateTable", parameterTypes);
gifts.addListener(m, this);
}catch(NoSuchMethodException e){
}
这是泄漏/反模式/错误吗?