假设我正在努力将一些服务器端类公开给 GWT 应用程序,但是使用特定于 GWT 的组件(例如 JSNI)可以更好地完成某些部分。
有哪些技巧可以做到这一点而又不会太hacky?
例如,我知道使用子包并使用 <super-source/>
标签,但这要求包名称不同,这会导致 eclipse 提示。社区中的一般解决方案是告诉 eclipse 使用它作为源文件夹,但是 eclipse 提示有两个同名的类。
理想情况下,有一种方法可以将所有内容保留在单个源代码树中,并且实际上具有应用替代实现的不同类。这感觉更像是一种面向对象的方法。
我想向像 _gwt 这样的类添加一个后缀,它可以自动完成此操作,并且我知道我可以编写一个脚本来进行这种转换,但这肯定是一个拼凑。
我一直在考虑在我的项目中使用 Google 的 GIN/GUICE 库,我认为那里可能有某种解决方案,但我不确定,因为我还没有彻底调查它。
您过去在 GWT 项目中尝试过哪些解决方案?
最佳答案
分割实现的最简单方法是使用 super 源代码,但仅足以实例化唯一命名的实例或分派(dispatch)到不同的方法。理想情况下, super 源实现只有几行长,而且还不错,以至于您无法手动滚动它。
为了解决 Eclipse/javac 双重映射和包名称问题,GWT 源使用两个 top-level roots对于用户代码:user/src 和 user/super。例如,AutoBeans 包具有 JSON 引用和评估的拆分实现, one for the JVM和 one for the browser .
确实没有一种非笨拙的方法来实现 super 源,因为这是一种超出您可以在语言中指定的功能的方式。如果不使用某些外部工具,就没有什么可以让您说“在此环境中使用此实现”。
关于oop - 如何提供具体的 GWT 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4941217/