gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:00:34 25 4
gpt4 key购买 nike

我想定义 GWT JSO属性名称作为 JSO 中的常量,以避免拼写错误并受益于 Eclipse 代码完成,如下所示:

public final class MyJSO extends JavaScriptObject
{
/** here is the constant */
private static final String MY_CONST = "myPropName";

protected MyJSO() {
super();
}

public native void setMyProp(final boolean pFlag)
/*-{
this.@fully.qualified.MyJSO::MY_CONST = pFlag;
}-*/;

public native boolean isMyProp()
/*-{
if (this.hasOwnProperty(@fully.qualified.MyJSO::MY_CONST)) {
return this.@fully.qualified.MyJSO::MY_CONST;
} else {
return false;
}
}-*/;
}

GWT 编译器应该能够在编译时从常量中替换 String,因此以后作为 Javascript 的对象不会有问题。

但这完全行不通,我想我可能错了。 :-) 谁能解释为什么?您有更好的想法来实现这一目标吗?

谢谢!

最佳答案

correct syntax引用静态变量是:

@fully.qualified.MyJSO::MY_CONST

不需要限定符(this.,在您的示例中),因为变量是静态的。

如果您想设置/获取具有常量名称的 JavaScript 对象的属性,请按以下方式操作:

public native void setMyProp(final boolean pFlag) /*-{
this[@fully.qualified.MyJSO::MY_CONST] = pFlag;
}-*/;

public native boolean isMyProp() /*-{
if (this[@fully.qualified.MyJSO::MY_CONST] != null) {
return this[@fully.qualified.MyJSO::MY_CONST];
} else {
return false;
}
}-*/;

关于gwt - 在 GWT Javascript 覆盖类型 (JSO) 中使用 Java 常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8438075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com