Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GWT条件编译_Java_Javascript_Gwt - Fatal编程技术网

Java GWT条件编译

Java GWT条件编译,java,javascript,gwt,Java,Javascript,Gwt,我对GWT1.5和GWT1.7应用程序使用相同的源代码 我想知道是否有一种方法可以有条件地编译一个或另一个版本的部分java代码 我知道在模块XML文件中有一种方法可以用于小部件和浏览器。如果您真的想这样做,我想应该使用生成器 有了生成器,你可以延迟绑定(有点可怜人的自省) 要访问1.5或1.7代码,您必须在接口中定义通用API,并在其上使用GWT.create来获得具体的实现。如果您真的想这样做,我想方法应该是使用生成器 有了生成器,你可以延迟绑定(有点可怜人的自省) 要访问1.5或1.7代码

我对GWT1.5和GWT1.7应用程序使用相同的源代码

我想知道是否有一种方法可以有条件地编译一个或另一个版本的部分java代码


我知道在模块XML文件中有一种方法可以用于小部件和浏览器。

如果您真的想这样做,我想应该使用生成器

有了生成器,你可以延迟绑定(有点可怜人的自省)


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

如果您真的想这样做,我想方法应该是使用生成器

有了生成器,你可以延迟绑定(有点可怜人的自省)


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

解决方案非常简单

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

解决方案非常简单

String version = GWT.getVersion();
if (version.startsWith("1.5"))
{
  // do something the 1.5.* way
}
if(版本.startsWith(“1.5”)) { //按1.5.*的方式做事 }

这其实是个坏主意。理想情况下,您应该在这里使用绝对字符串值,因为GWT编译器将在编译输出的if条件中计算相等并修剪不可访问的代码。使用.startsWith意味着所有的代码都将在最终的应用程序中结束

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

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

这其实是个坏主意。理想情况下,您应该在这里使用绝对字符串值,因为GWT编译器将在编译输出的if条件中计算相等并修剪不可访问的代码。使用.startsWith意味着所有的代码都将在最终的应用程序中结束


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

我不这么认为。为什么要编译两个GWT源代码?我们从1.5升到1.7没有问题。我们做到了。但在一种情况下,旧的(1.5)和新的(1.7)编译代码的行为并不相同。它是java和本机插入脚本的组合。将旧的(1.5)代码移动到新的接口删除所有不推荐的调用目前需要做很多工作。我不这么认为。为什么要编译两个GWT源代码?我们从1.5升到1.7没有问题。我们做到了。但在一种情况下,旧的(1.5)和新的(1.7)编译代码的行为并不相同。它是java和本机插入脚本的组合。将旧的(1.5)代码移动到新接口删除所有不推荐的调用目前需要做很多工作。感谢您指出这一点,但这是我找到的唯一解决方案。这只是一个小代码片段。所以这个解决方案对我来说很好。谢谢你指出这一点,但这是我找到的唯一解决方案。这只是一个小代码片段。所以这个解决方案对我来说很好。