javax.script.*
Java プログラムでのスクリプト作成に Rhino を使用しています。
スクリプトはインターフェイスをうまく実装できますが、同様の構文を使用して抽象クラスをインスタンス化しようとすると (実装されていないメソッドの定義を与える)、MyTestAbstractClass
(インスタンス化しようとしているクラスが) インターフェイスまたは概要。私は何か非常に間違ったことをしていますか?
これは私が使用しているJavascriptコードです:
var testObject = new foo.mytestpackage.TestAbstractClass() {
printMessage: function() {
print("foo");
}
};
TestAbstractClass
通常のコンストラクター (パラメーターなし) を持つクラスの場合、次のスタックトレースを取得します。
javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorException: error instantiating (JavaAdapter: first arg should be interface Class (<Unknown source>#1)): class com.merkle.TestObject is interface or abstract (<Unknown source>#1) in <Unknown source> at line number 1
at com.sun.script.javascript.RhinoScriptEngine.eval(Unknown Source)
at com.sun.script.javascript.RhinoScriptEngine.eval(Unknown Source)
at javax.script.AbstractScriptEngine.eval(Unknown Source)
私は Sun の (聞いたところ、少し簡略化された) Rhino 実装を使用していますが、公式の Rhino jar を使用するのはかなり大きいので避けたいと思っています。