GWT条件编译

时间:2009-08-11 07:45:39

标签: java javascript gwt

我正在为GWT 1.5和GWT 1.7应用程序使用相同的源代码。

我想知道有没有办法有条件地为一个或另一个版本编译部分java代码。

我知道有一种方法可以在模块XML文件中为小部件和浏览器执行此操作。

3 个答案:

答案 0 :(得分:1)

解决方案非常简单。

String version = GWT.getVersion();
if (version.startsWith("1.5"))
{
  // do something the 1.5.* way
}

答案 1 :(得分:0)

如果你真的想这样做,我想这种方法就是使用Generator。

使用生成器,您可以使用延迟绑定(有点可怜的人的内省)。

要访问1.5或1.7代码,您必须在接口中定义通用API,并在其上使用GWT.create来获得具体实现。

答案 2 :(得分:0)

if(version.startsWith(“1.5”)) {   //做1.5。*方式 }

实际上是个坏主意。理想情况下,您应该在此使用绝对字符串值,因为GWT编译器将从编译输出中评估if条件内的相等性和修剪不可达代码。使用.startsWith意味着所有代码都将在最终的应用程序中结束。

不幸的是,GWT版本不是编译时属性。也许最好的方法是创建一个空的Generator实现,只需从模块中为“ClassName”调用返回“ClassName15”或“ClassName17”。然后,您可以在编译时从生成器调用About.version()并在编译时找出该版本的内容。