GWT类成员命名

时间:2012-06-07 12:27:11

标签: java javascript gwt web-worker renaming

我正在使用GWT。

当它将Java代码编译为Javascript代码时,有时它会更改某些成员的名称。 例如: private int height; 变成了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++;
}

private int a; public TestClass() { a = 0; } public TestClass(int a) { this.a = a; } public int getMember() { return a; } public void advance() { a++; }
会产生如下输出:

}

成员a的名称已更改为a_0。在某些情况下,使用Web worker时,代码将在Web worker脚本上进行不同的编译,并且不会更改成员的名称(例如,将被cjanged到a_1)。 我的问题是当我将消息中的对象传输给Web worker时。在用Java编写Web工作者端时,我期望访问成员a,而不是a_0。使用getter并不能解决问题,因为在编译为JS时,它们只是被直接访问所取代。

我的问题: 为什么会发生这些命名更改?在哪些情况下?有可能避免它们吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

在大多数情况下,这些字段实际上会重命名为ab等等。您在这里看到的是由-style PRETTY编译而不会混淆代码。

GWT模糊代码的原因是使代码更小。

如果您需要将对象传递给外部世界,您必须序列化它们(或将它们映射到JavaScript对象)到一个稳定的结构。

最简单的方法是使用JavaScriptObject。您还可以查看gwt-exporter