Rhino Javascript编译器

Rhino Javascript编译器,java,javascript,rhino,Java,Javascript,Rhino,我找到了使用Rhino编译器将javascript编译成java的方法。我能够让这个简单的案例工作,并在java中调用这些方法。不过,我有一些问题,希望能在这里得到解答 如何使用方法(setTmpValue、getTmpValue、getType)和1个参数的构造函数将下面的代码编译成TestObject.class?还是不可能 函数TestObject(params) { this.type=params.type; var-tmpValue=0; this.setTmpValue=函数(va

我找到了使用Rhino编译器将javascript编译成java的方法。我能够让这个简单的案例工作,并在java中调用这些方法。不过,我有一些问题,希望能在这里得到解答

  • 如何使用方法(setTmpValue、getTmpValue、getType)和1个参数的构造函数将下面的代码编译成TestObject.class?还是不可能

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

  • 是否可以引用将从其他js文件编译的类

    示例:我可以在A中调用B吗?或者在A中使用新的B()?
    A.js->A.class
    B.js->B.class

  • 这些编译类的作用域是如何工作的

  • 除此之外还有其他文件吗

  • 提前感谢您的帮助

    有一种更简单的方法,无需编译;考虑到您的问题和评论,您的目标似乎是让JavaScript对象可以从Java调用

    这里有一种方法:

    在Java方面:

    package mypackage;
    public abstract class TestObject {
        // insert public abstract methods
        public abstract void doIt();
    }
    
    package myapplication;
    
    public class MyApplication {
        private static TestObject test;
    
        public static void setTestObject(TestObject o) {
            test = o;
        }
    
        public void doSomething() {
            test.doIt();
        }
    }
    
    在JavaScript方面:

    var myInstance = new JavaAdapter(
        Packages.mypackage.TestObject,
        {
            doIt: function() {
                // do something
            }
        }
    )
    
    Packages.myapplication.MyApplication.setTestObject(myInstance);
    
    回到Java方面:

    package mypackage;
    public abstract class TestObject {
        // insert public abstract methods
        public abstract void doIt();
    }
    
    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对象一样调用它们。据我所知,那正是你想要的。如果没有,请留下澄清,我们将从那里开始。

    您在这里的主要动机是什么?是从Java访问JavaScript对象吗?主要动机是在JavaScript和Java之间共享逻辑(相同的代码)。如果您希望将它们编译到
    .class
    文件并将它们缓存到磁盘,这样就不需要重新编译脚本了,该怎么办?我在找这样的东西。