如何提供特定的GWT实现

Kev*_*lan 7 oop gwt dependency-injection

假设我正在将一些服务器端类暴露给GWT应用程序,但使用特定于GWT的组件(例如JSNI)可以更好地完成某些部分.

这样做的技巧是什么,而不是太苛刻?

例如,我知道使用子包并使用<super-source/>标签,但这需要包名称不同,这会导致eclipse抱怨.社区中的一般解决方案是告诉eclipse将其用作源文件夹,但是eclipse抱怨有两个具有相同名称的类.

理想情况下,只有一种方法可以将所有内容保存在单个源代码树中,并且实际上有不同的类应用备用实现.这将是一种更为面向对象的方法.

我想为像_gwt这样的类添加一个后缀,它自动完成这个,我知道我可以编写一个脚本来进行这种转换,但这肯定是一个问题.

我一直在考虑将Google的GIN/GUICE库用于我的项目,我认为可能会有某种解决方案,但我不确定,因为我没有彻底调查它.

您过去在GWT项目中尝试过哪些解决方案?

Bob*_*obV 7

分割实现的最简单方法是使用超级源代码,但仅足以实例化唯一命名的实例或分派到不同的方法.理想情况下,超级源代码实现只需几行,并且不会太差,以至于您无法手动滚动它.

为了解决Eclipse/javac双映射和包名称问题,GWT源为用户代码使用两个顶级根:user/src和user/super.例如,AutoBeans包具有JSON引用和评估的拆分实现,一个用于JVM,另一个用于浏览器.

实际上没有非kludgy方法来实现超级源代码,因为这是一种超出您在语言中指定的功能.没有任何东西可以让你说"在这个环境中使用这个实现"而不使用一些外部工具.