Bir Java yöntemini rastgele komut dosyaları ile çağrılabilmek için açığa çıkarmak istiyorum. Komut, daha sonra, dönüş değeri üzerinde aritmetik işlemleri gerçekleştirebilmelidir.Rhino: JavaScript tarafından çağrılan Java yönteminden bir Tamsayı nasıl döndürülebilir?
Sorun, açık olan yöntem bir Java Integer
döndürse de, komut dosyası aslında normal bir sayı almaz, ancak org.mozilla.javascript.NativeJavaObject
örneğidir. İşte
public class RhinoTest
{
public static void main(String[] args)
{
String script = "foo.getBar() + 1";
Context context = Context.enter();
ScriptableObject scriptableObject = context.initStandardObjects();
ScriptableObject.putProperty(scriptableObject, "foo", new Foo());
Object result = context.evaluateString(scriptableObject, script, "FooBar", 1, null);
Context.exit();
System.out.println(result);
}
public static class Foo
{
public Integer getBar()
{
return 9;
}
}
}
beklenen sonuç 10
olmakla senaryo 91
döndürür.
Peki, komut dosyası içinde gerçekleşen getBar()
çağrılarını nasıl yapabilirim normal bir Javascript veri türü döndürüyor? Lütfen, script kodunu unwrap()
çağrıları, veya benzeri ekleyerek değiştirmek istemediğimi unutmayın.
deneyin '¨foo.getBar()' + 1 – subodh