假设我正在努力将一些服务器端类暴露给GWT应用程序,但使用特定于GWT的组件(例如JSNI)可以更好地完成某些部分。
这样做的技巧是什么,而不是太苛刻?
例如,我知道使用子包并使用<super-source/>
标记,但这需要包名称不同,这会导致eclipse抱怨。社区中的一般解决方案是告诉eclipse将其用作源文件夹,但是eclipse抱怨有两个具有相同名称的类。
理想情况下,只有一种方法可以将所有内容保存在单个源代码树中,并且实际上有不同的类应用备用实现。这将是一种更为面向对象的方法。
我想为像_gwt这样的类添加一个后缀,它会自动完成这个,我知道我可以编写一个脚本来进行这种转换,但这肯定是一个问题。
我一直在考虑将Google的GIN / GUICE库用于我的项目,我认为可能会有某种解决方案,但我不确定,因为我没有彻底调查过它。
您过去在GWT项目中尝试过哪些解决方案?
答案 0 :(得分:7)
分割实现的最简单方法是使用超级源代码,但仅足以实例化唯一命名的实例或分派给不同的方法。理想情况下,超级源实现只需几行,而且不会太差,以至于您无法手动滚动它。
要解决Eclipse / javac双映射和包名称问题,GWT源使用两个top-level roots用户代码:user / src和user / super。例如,AutoBeans包具有JSON引用和评估的分割实现,one for the JVM和one for the browser。
实现超级源代码的确没有非法的方式,因为这是一种超出您在语言中指定的功能。没有任何东西可以让你说“在这个环境中使用这个实现”而不使用一些外部工具。