我正在使用 GWT。
在将 Java 代码编译为 Javascript 代码时,有时会更改某些成员的名称。例如:私有 int 高度;在 JS 中变为:height_0;
例子:
public class TestClass
{
private int a;
public TestClass()
{
a = 0;
}
public TestClass(int a)
{
this.a = a;
}
public int getMember()
{
return a;
}
public void advance()
{
a++;
}
}
将产生如下输出:
function TestClass_0(){
this.a_0 = 0;
}
function TestClass_1(a){
this.a_0 = a;
}
function TestClass(){
}
_ = TestClass_1.prototype = TestClass_0.prototype = TestClass.prototype = new Object_0;
_.advance_0 = function advance(){
++this.a_0;
}
;
_.getClass$ = function getClass_1(){
return Lcom_autodesk_autocadws_gwt_platform_testExporter_TestClass_2_classLit;
}
;
_.getMember_0 = function getMember(){
return this.a_0;
}
;
_.a_0 = 0;
}
成员 a 的名称已更改为 a_0。在某些情况下,当使用 web worker 时,代码会在 web worker 脚本上进行不同的编译,并且不会更改成员的名称(或者会更改为 a_1,例如)。我的问题是当我将消息中的对象传输给网络工作者时。在用 Java 编写 web worker 端时,我希望访问成员 a,而不是 a_0。使用 getter 并不能解决问题,因为它们在编译为 JS 时被直接访问替换。
我的问题:为什么会发生这些命名变化?在哪些情况下?有可能避免它们吗?
非常感谢。