1

我正在使用 GWT 的生成器功能来抽象一个 javascript 库,根据某些标记接口中包含的方法自动生成代码,因此RemoteService即使在幕后,它们也可以像 GWT 一样被对待,其他事情完全在发生。如何让 Eclipse 生成(并可能在其中更新/标记错误)关联的异步接口?请注意,我不是在问如何创建 a 的异步版本RemoteService;我知道该怎么做。事实上,这里没有进行服务器通信。我希望做类似的事情,以便未来熟悉 GWT 的开发人员RemoteServices 将了解如何使用我的抽象。我有“幕后”的工作,所以我不会在这里为那个 javascript 库的细节而烦恼。问题是如何根据一些任意规则创建和维护一个“异步”接口,以伴随开发人员提供的“同步”接口。

例如,一些未知的未来开发者可能会提供一个接口

public interface MyFoo extends MyMarkerI {
    void doFoo(String someVar);
    String doBar(String someOtherVar);
}

我想让eclipse生成“异步”接口

public interface MyFooAsync {
    void doFoo(String someVar); //returns void; callback not needed.
    void doBar(String someOtherVar, SomeCallback<String> callback);
}

可能将以下内容标记为错误(在 eclipse 中,我在编译时看到错误),因此开发人员可以重新生成它

public interface MyFooAsync { //eclipse red-squigly underline, missing a method
    void doFoo(String someVar);
}

目前,我正在手动创建和更新异步版本。我可能不记得更改这两个接口,直到我去编译并且我得到一个错误。如果可能的话,我不想手动维护这两个接口,特别是因为可能有许多不同的接口被标记为要处理。我不是在寻找 GWT 的发电机;这就是我用来MyFooAsync在编译时提供实现的东西。我需要在开发(即编译之前)时创建的 Async接口,以便我可以使用该类型。例如,

MyFooAsync foo = (MyFooAsync) GWT.create(MyFoo.class);

如果使用生成器创建是不可能的,因为 MyFooAsync 将不可用。

我想这可以通过为 eclipse 或编译器编写插件来实现,但我从来没有这样做过,也不知道从哪里开始。我什至找不到 GWT 用来生成和维护它们的异步接口的代码。

如果问题不清楚,我很乐意提供更多说明。任何帮助,将不胜感激。

4

0 回答 0