次のように変更できないクラスがあります。
public class Foo {
public final int ID=0;
public int bar;
public final Object baz=null;
}
Foo
次のようなオーバーライドを行う匿名の内部クラスが必要です。
public Foo newFoo(final int mID, final int mbar, final Object mbaz) {
return new Foo(){
public final int ID = mID;
public int bar = mbar;
public final Object baz = mbaz;
};
}
次にjavax.script.ScriptEngine
、JSで次のようなものを呼び出したいと思います。newFoo(0,0,undefined)["ID"]
私の問題は、次のような例外が発生することです。
sun.org.mozilla.javascript.internal.WrappedException: Wrapped java.lang.IllegalAccessException: Class sun.org.mozilla.javascript.internal.JavaMembers can not access a member of class Baz$1 with modifiers "public final" (mod.js#9) in test.js at line number 9
ここで問題が発生する可能性がある方法がわかりません。これnewFoo
は、プレーンな'olを返す場合は問題なく機能しますが、匿名の内部クラスでFoo
オーバーライドしようとするFoo
と、オーバーライドされたメンバーにアクセスできません。公衆。