私は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 ワーカーを使用する場合、コードは Web ワーカー スクリプトで別の方法でコンパイルされ、メンバーの名前は変更されません (または、たとえば a_1 に変更されます)。それに関する私の問題は、メッセージ内のオブジェクトを Web ワーカーに転送するときです。Web ワーカー側を Java でコーディングする場合、a_0 ではなくメンバー a にアクセスすることを期待しています。getter を使用しても問題は解決しません。JS にコンパイルされると直接アクセスに置き換えられるだけだからです。
私の質問: これらの名前の変更はなぜ行われるのですか? どのような場合に?それらを避けることは可能ですか?
どうもありがとう。