传递 Java 对象
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
前面提到,脚本化技术允许我们在 Java 中访问 JavaScript 变量,调用 JavaScript 函数,以及反过来,从 JavaScript 中访问 Java 对象的属性,方法。 我们先创建一个 Person 的简单类,其中包含 name 和 age 属性,以及 getter/setter, 然后通过脚本来访问这个对象。
package com.rc.scripting;
public class Person{
String name;
int age;
public Person(
String name, int age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
有了这个 Person 类之后,我们在来建立一个脚本文件,命名为 script.js:
print(jack);
print('\n');
print(jack.getName());
然后,我们将 HelloScript 类的 main 做一些简单修改,创建新的 Person 对象 jack,并 将其 put 到引擎中,然后去 eval 刚才建立的脚本文件 script.js:
public static void main(String args[]){
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
Person jack = new Person("jack", 28);
engine.put("jack", jack);
try {
engine.eval(new java.io.FileReader("scripts/script.js"));
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
可以得到如下结果:
com.rc.scripting.Person@18ac738 jack
在线练习
{$ activeFileHint $}