绑定属性究竟是什么?对我来说,他们似乎是使用EventObjects的事件类型安全版本 - 对event.getPropertyName()使用字符串相等检查似乎有点弱。为什么使用javabean绑定的属性而不是事件?
为什么你会用另一个呢?
绑定属性究竟是什么?对我来说,他们似乎是使用EventObjects的事件类型安全版本 - 对event.getPropertyName()使用字符串相等检查似乎有点弱。为什么使用javabean绑定的属性而不是事件?
为什么你会用另一个呢?
Java Beans的重点在于系统(特别是GUI Builder)可以检查Java Bean并在没有任何此组件的情况下对其进行配置。
虽然这相当酷,但它只在这种特定情况下才有用,现在这些注释会更好。
因此,他们使用绑定属性的原因仅仅是为了支持这种插入式GUI组件技术,除非需要支持反射式gui构建系统,否则我不会更喜欢它。
响应@Mike啮齿动物
比方说,你让你的用户创建一个类,您将控制。这个班有一个“主”,可以处理几个事件。
通常你有你的用户做这样的事情:
class UserClass(someClass) { void mainMethod() { someClass.addEventListener(new EventListener() { public void eventsHappen(Event e){ event1(e) } } } someClass.addDifferentEventListener(new DifferentEventListener() { public void eventsHappen(DifferentEvent e){ event2(e) } } } } public void event1(Event e) { //java code for event 1 } public void event2(DifferentEvent e) { // java code for event 2 } }
无论如何,你的想法。当然,你认为这个类是在某处注册的 - 可能是在xml/config文件中。你读它,实例化它并执行mainMethod(由协议或接口定义),它自己注册并开始调用事件处理程序。
现在,这里是你如何能做到用注解同一件事:(您可能认识的格局 - 这几乎是Junit的是如何诠释测试。)
class UserClass() { @Event1 void event1Method(Event e) { event1's code } @Event2 void event2Method(AnotherEvent e) { event2's code } }
这是更为直刚愎和去除大部分的样板,并且它也消除了对协议或界面的需求,注释更加清晰地定义和独立。 (如果你关心的是传递给方法的参数,你实际上甚至不需要事件注释,但是龙就是在这个大方向上)。
您仍然需要在某处注册的类,但是这次您只需扫描每种方法以查找事件注释并自行注册它们。由于只有几行代码才能读取和处理类,所以为什么要限制这种模式进行单元测试?
我发现的另一件事情非常整洁,我将这种模式用于“插入”到我的Java程序中的Groovy类。由于我正在编译给定目录中的所有类,因此扫描注释很简单。对用户的影响是他插入(或编辑)正确注释的常规文本文件,我的代码立即编译,集成并开始调用他们的事件处理程序。
JavaBeans是一个规范。它将绑定属性定义为其修改导致发出通知的绑定属性,并且PropertyChangeEvent是受制裁的通知实体。
所以推测的JavaBeans-spec bean编辑器应该监听PropertyChangeEvents。除了需要使用该规范之外,我自己也不会使用它。
我认为JavaBeans规范的设计考虑了通用对象处理。例如,将JavaBean放入IDE中并使用可视化属性编辑器进行配置。在这种情况下,IDE将使用一般的PropertyChangeEvent等。
或者如果你想从一个bean复制同等命名的属性到另一个......这是bean使用(BeanUtils类)的另一种情况。但是,如果你打算做某些具体的事情,就像Noel Ang说的那样,我建议你打字强。
我对你关于注释的评论很感兴趣:你可以给一个链接或者简单地解释一下注释可以如何用于事件处理? – 2012-11-11 10:39:06