在GWT Javascript覆盖类型(JSO)中使用Java常量?
我想在JSO中将GWT属性名定义为一个常量,以避免打字错误并从Eclipse代码完成中获益,如下所示: 公共最终类MyJSO扩展了JavaScriptObject { /**这是常数*/ 私有静态最终字符串MY_CONST=“myPropName”; 受保护的MyJSO(){ 超级(); } 公共本机void setMyProp(最终布尔值pFlag) /*-{ 这是@full.qualified.MyJSO::MY_CONST=pFlag; }-*/; 公共本机布尔值isMyProp() /*-{ if(this.hasOwnProperty(@full.qualified.MyJSO::MY_CONST)){ 返回此内容。@full.qualified.MyJSO::MY_CONST; }否则{ 返回false; } }-*/; } GWT编译器应该能够在编译时替换常量中的字符串,因此以后作为Javascript存在的对象没有问题 但这完全不起作用,我想我可能错了。:-)有人能解释为什么吗?你有更好的想法如何实现这一点吗 谢谢 引用静态变量的方法是:在GWT Javascript覆盖类型(JSO)中使用Java常量?,gwt,gwt-2.4,Gwt,Gwt 2.4,我想在JSO中将GWT属性名定义为一个常量,以避免打字错误并从Eclipse代码完成中获益,如下所示: 公共最终类MyJSO扩展了JavaScriptObject { /**这是常数*/ 私有静态最终字符串MY_CONST=“myPropName”; 受保护的MyJSO(){ 超级(); } 公共本机void setMyProp(最终布尔值pFlag) /*-{ 这是@full.qualified.MyJSO::MY_CONST=pFlag; }-*/; 公共本机布尔值isMyProp() /*
@fully.qualified.MyJSO::MY_CONST
因为变量是静态的,所以不需要限定符(this.
,在您的示例中)
如果要设置/获取JavaScript对象的常量名属性,请执行以下操作:
public本机void setMyProp(最终布尔值pFlag)/*-{
这个[@full.qualified.MyJSO::MY_CONST]=pFlag;
}-*/;
公共本机布尔值isMyProp()/*-{
if(this[@full.qualified.MyJSO::MY_CONST]!=null){
返回这个[@full.qualified.MyJSO::MY_CONST];
}否则{
返回false;
}
}-*/;
谢谢!解决这个问题的提示是我必须使用方括号来访问属性,而不是点符号。使用方括号,我的代码可以工作!hasOwnProperty
行可以保持不变,即使您知道…:-)