私の問題は、私が評価するために、オブジェクトを渡すとき、私はTypeError: org.XXX.XXX.MyClass has no such function xxx ...
public class FilterClass{
ScriptEngine engine;
Invocable inv;
public FilterClass(File file){
ScriptEngineManager manager = new ScriptEngineManager();
engine = manager.getEngineByName("JavaScript");
engine.eval(new FileReader(file));
inv = (Invocable) engine;
}
public boolean passes(MyObject object){
Object result = inv.invokeFunction("passes", object);
return (Boolean) result;
}
}
を得ることをMyObjectに
public class MyObjectFactory{
private class MyObject{
private final int myint;
public MyObject(int i){
myint = i;
}
public int getValue(){
return myint;
}
}
public MyObject makeObject(int i){
return new MyObject(i);
}
}
を作るためのオブジェクトファクトリ定義でありますナショーンはで定義されている関数にアクセスできませんこの例ではMyObjectクラスのようなクラスです。
public class MyObjectWrapper{
private final MyObject myobject;
public MyObjectWrapper(MyObject o){
myobject = o;
}
public int getValue(){
return myobject.getValue();
}
}
は、その後、私はラップすることにより、機能にアクセスできます:
public boolean passes(MyObject object){
Object result = inv.invokeFunction("passes", new MyObjectWrapper(object));
return (Boolean) result;
}
私の入れ子になったクラスを公開したくなかった
ので、私はMyObjectにフィールドを公開することのラッパークラスを書いてしまいました