使用Javascript Rhino重载Java方法

时间:2011-10-10 19:25:19

标签: java android rhino

我有一个如下所示的类,我想使用Javascript Rhino覆盖这两种方法,任何建议?

提前致谢!!

class MyClass() {
  public void method1(); 
  public void method2(); 

  MyClass() {
    method1();
    method2();
  } 
}

2 个答案:

答案 0 :(得分:2)

我最后一次使用它时,JDK捆绑的Rhino不支持扩展类(仅实现SAM接口),但Mozilla的Rhino确实支持覆盖类。查看JavaAdapterhttps://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino/Scripting_Java#The_JavaAdapter_Constructor

答案 1 :(得分:1)

虽然我没有在Android环境中尝试过这个,但Rhino确实支持JavaAdapter构造 - 如下所示:https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino/Scripting_Java#The_JavaAdapter_Constructor它允许您创建定义正确方法的JS对象,然后有效地创建单个超类和/或一个或多个接口之间的包装器。在这种情况下,例如:

var o = {
  method1: function() {
    print('method1');
  },
  method2: function() {
    print('method2');
  }
}

//This line should instantiate the child class, with
//method1 + method2 overridden called within the constructor
var instanceThatIsAMyClass = new JavaAdapter(com.example.MyClass, o);