私はRhinoで内部クラス(Javaで定義されている)をサブクラス化しようとしています。私は内側の抽象クラスを持っているいくつかのコンパイルされたJavaコード(私は基本的に変更することはできませんどの)持ってRhinoで内部(静的)クラスをサブクラス化する方法は?
:
package mypackage;
class MyClass {
abstract static class MyInnerClass {
abstract void print(String s);
}
}
Rhinoのからを、私はうまくそれを見ることができます。
js> Packages.mypackage.MyClass.MyInnerClass
[JavaClass mypackage.MyClass$MyInnerClass]
を
しかし、私はそれをサブクラス化する方法を理解できません。
var a = new JavaAdapter(Packages.mypackage.MyClass.MyInnerClass, {
print: function(s) { print("s=" + s); },
});
だけでなく、それは動作しません、サイ自体が終了し、私にかなりのスタックトレースを与える:私は非内部クラスのためにそれを行うことから、このような何かが働くと考えました
Exception in thread "main" java.lang.IllegalAccessError: class adapter1 cannot access its superclass mypackage.MyClass$MyInnerClass
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:676)
at org.mozilla.javascript.DefiningClassLoader.defineClass(DefiningClassLoader.java:62)
...
私は間違っているのですか?何か案は?
EDIT:まあ、私は、MyClassが "public"と宣言されていないことに気付きました。それはそれかもしれませんか?
よく、公開して私たちに連絡してください:-) – Pointy
おそらくはい、サブクラス化しようとしている場所によっては公開する必要があります。 – fmucar