【发布时间】:2012-10-11 15:30:11
【问题描述】:
在一般情况下使用 Java Handlers 时,人们经常使用三种方法:
- 创建一个将实现所有需要的接口的类
- 创建一个
anonymous inner class - 创建
local class
我只对 2) 和 3) 之间的区别感兴趣
比较 2) 和 3) 我们可以考虑下面的代码。在这个例子中,编译器只会生成一个类。
class MyHandler implements ClickHandler, DragHandler, MovedHandler
{
public void onClick(ClickEvent clickEvent)
{
// Do stuff
}
public void onMoved(MovedEvent movedEvent) {
// Do stuff
}
public void onDrag(DragEvent event) {
// Do stuff
}
}
MyHandler localHandler = new MyHandler();
button.addClickHandler(localHandler);
something.addDragHandler(localHandler);
that.addMovedHandler(localHandler);
在以下示例中,编译器将生成三个内部类(如果我错了,请纠正我)。
button.addClickHandler(new ClickHandler()
{
public void onClick(ClickEvent clickEvent)
{
// Do stuff
}
});
something.addDragHandler(new DragHandler()
{
public void onDrag(DragEvent event)
{
// Do stuff
}
});
that.addMovedHandler(new MovedHandler()
{
public void onMoved(MovedEvent movedEvent)
{
// Do stuff
}
});
我的问题是:这两种方法之间还有其他区别吗?使用其中一个有什么注意事项吗?
【问题讨论】:
-
一个本地类被命名,可以有多个构造函数,实现多个接口。
-
@Quoi 并不是真正的重复,在这种情况下,我说的是处理程序,以及我们经常需要多个匿名类而没有相同方法的具体事实
-
+1 好的。我也觉得,不完全是。
标签: java class compiler-construction