Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/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
在GWT Javascript覆盖类型(JSO)中使用Java常量?_Gwt_Gwt 2.4 - Fatal编程技术网

在GWT Javascript覆盖类型(JSO)中使用Java常量?

在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() /*

我想在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存在的对象没有问题

但这完全不起作用,我想我可能错了。:-)有人能解释为什么吗?你有更好的想法如何实现这一点吗

谢谢

引用静态变量的方法是:

@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
行可以保持不变,即使您知道…:-)