我正在为GWT 1.5和GWT 1.7应用程序使用相同的源代码。
我想知道有没有办法有条件地为一个或另一个版本编译部分java代码。
我知道有一种方法可以在模块XML文件中为小部件和浏览器执行此操作。
答案 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()并在编译时找出该版本的内容。