2014-09-19 112 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對象。據我所知,這就是你想要的。如果沒有,留下澄清,我們將從那裏開始。