Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我应该使用哪个GWT事件总线?_Java_Gwt_Event Handling - Fatal编程技术网

Java 我应该使用哪个GWT事件总线?

Java 我应该使用哪个GWT事件总线?,java,gwt,event-handling,Java,Gwt,Event Handling,在gwt-user.jar中有2个EventBus接口和SimpleEventBus实现 com.google.gwt.event.shared.EventBus和com.google.web.bindery.event.shared.EventBus 我将这些称为“gwt.event”和“web.bindery” 查看JavaDocs和源代码,我可以看到gwt.event仅仅包装了web.bindery。然而,gwt.event实现还隐藏了许多不推荐使用的方法 那么我应该使用哪种实现呢?(我使

在gwt-user.jar中有2个EventBus接口和SimpleEventBus实现

com.google.gwt.event.shared.EventBus
com.google.web.bindery.event.shared.EventBus
我将这些称为“gwt.event”和“web.bindery”

查看JavaDocs和源代码,我可以看到gwt.event仅仅包装了web.bindery。然而,gwt.event实现还隐藏了许多不推荐使用的方法


那么我应该使用哪种实现呢?(我使用的是GWT2.4)

通常,您应该使用
com.google.web.bindery
中的一个。唯一的版本以前是在
com.google.gwt.event
中,但当RequestFactory和AutoBeans从gwt本身迁移到
com.google.web.bindery
中时,它们就可以在非gwt客户端中工作


如果您在演示者中使用
com.google.web.bindery
版本等,那么如果需要,您可以更轻松地使用GWT以外的应用程序。将该实例传递给
PlaceController
和其他使用EventBus的类时,也不会收到弃用警告

如果您使用活动,那么您可能必须使用不推荐使用的活动,至少在它们清理整个API之前是这样:

使选择更加复杂。我在我的GWT应用程序中使用了guava,google的家伙们在其中添加了另一个EventBus(功能更不完整)

也许这些人需要坐在一起,定义一个实现来管理所有人


显然,我希望避免GWT代码中未严格使用的代码对GWT的所有依赖,因此番石榴对我来说很有趣。

我知道这个问题已经有了答案,但可能值得添加以下内容。正如我在上面的评论中所说,Activity仍然需要com.google.gwt.event.shared.EventBus类。为了避免不推荐的警告,我执行了以下操作(我使用GIN):


通过这样做,您将始终使用bindery包中“新”版本的事件总线中的对象。

Ah!非GWT客户端非常有意义。如果您使用Activity和Places,则start方法中的Activity需要一个com.google.GWT.event.shared.EventBusThanks指向问题链接。我会直接遇到这个问题。我也有同样的困境。也许,其他很多人都有。我忽略了不推荐的建议,而是使用旧的软件包,因为谷歌已经在那里制造了一个混乱。
public class GinClientModule extends AbstractGinModule {

    @Override
    protected void configure() {
        bind(EventBus.class).to(SimpleEventBus.class).in(Singleton.class);
        ...
    }

    @Provides
    @Singleton
    public com.google.gwt.event.shared.EventBus adjustEventBus(
            EventBus busBindery) {
        return (com.google.gwt.event.shared.EventBus) busBindery;
    }

...