在GWT中是否可以在客户端和服务器上使用不同的函数实现? E. g。
private static native String toFixedNative(int digits, double value) /*-{
return value.toFixed(digits);
}-*/;
public static String toFixed(int digits, double value) {
if (GWT.isClient()) {
return toFixedNative(digits, value);
} else {
String format = "%." + digits + "f";
return String.format(Locale.US, format, value);
}
}
目前这不起作用,GWT编译器抱怨说,String.format
函数在GWT中不可用。但实际上并不需要它,因为String.format
仅在!GWT.isClient()
时被调用。
有没有办法告诉GWT编译器忽略函数的一部分?
答案 0 :(得分:1)
使用GWT的最新版本(2.7,也许还有2.6),应该可以通过将String.format
移动到随后使用@GwtIncompatible
注释的方法(使用该注释的任何注释)来实现。名称可行,包不重要。
在任何版本的GWT中,它也可以超级源一个类:为客户端和非客户端案例提供两个版本的类。请参阅http://www.gwtproject.org/doc/latest/DevGuideOrganizingProjects.html#DevGuideModuleXml中的“覆盖一个包实现与另一个包” 你会在GWT中发现很多例子;这也是Java Runtime的模拟方式。