2014-09-19 114 views
0

我发现了关于使用Rhino编译器将JavaScript编译为java的post。我能够得到简单的例子,并在java中调用方法。但是,我有一些问题,并希望我可以在这里回答他们。犀牛Javascript编译器

  1. 我如何编译下面的代码,TestObject.class与方法(setTmpValue,getTmpValue,的getType)以及构造的1个参数?或者这是不可能的?

    function TestObject(params) { this.type= params.type; var tmpValue = 0; this.setTmpValue = function (val) { tmpValue = val; }; this.getTmpValue = function() { return tmpValue; }; this.getType = function() { return type }; }

  2. 是否有可能指的是将其他js文件编译类?

    Example: Can I invoke B in A? or do new B() in A? A.js -> A.class B.js -> B.class

  3. 如何为这些范围的工作编译的类?

  4. 是否有其他文档比Here

在此先感谢您的帮助!

+0

你在这里的主要动机是什么?它是从Java访问JavaScript对象吗? – 2014-09-19 15:13:21

+0

主要动机是在javascript和java之间共享逻辑(相同的代码)。 – jaspercl 2014-09-19 16:52:49

回答

0

有一个更简单的方法,没有编译;看起来,考虑到你的问题和评论,你的目标是让JavaScript对象可以从Java调用。

下面是做这件事:

在Java方面:

package mypackage; 
public abstract class TestObject { 
    // insert public abstract methods 
    public abstract void doIt(); 
} 

在JavaScript端:

var myInstance = new JavaAdapter(
    Packages.mypackage.TestObject, 
    { 
     doIt: function() { 
      // do something 
     } 
    } 
) 

Packages.myapplication.MyApplication.setTestObject(myInstance); 

回Java方面:

package myapplication; 

public class MyApplication { 
    private static TestObject test; 

    public static void setTestObject(TestObject o) { 
     test = o; 
    } 

    public void doSomething() { 
     test.doIt(); 
    } 
} 

基本上,JavaScript对象可以实现Java接口或扩展Java抽象类。如果他们使自己在Java端可用,那么Java端可以将它们称为Java对象。据我所知,这就是你想要的。如果没有,留下澄清,我们将从那里开始。