JDK 6 - 07: Scripting : RunnableImplObject

0

Written on 오전 4:33 by 강여사(J.Y.Kang)

만약 스크립팅 언어가 객제 기반이거나 객체 지향이라면, 스크립트 객체에 스크립트 메소드에 의한 자바 인터페이스를 구현할 수 있다. 인터페이스 메소드를 위한 전역 함수 호출을 회피할 수 있다. 스크립트 객체는 인터페이스 구현자에 의한 “상태” 를 저장할 수 있다.

====================================================================================
package test;

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class RunnableImplObject {

public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");

// JavaScript code in a String
String script = "var obj = new Object(); obj.run = function() { println('run method called'); }";

// evaluate script
engine.eval(script);

// get script object on which we want to implement the interface with
Object obj = engine.get("obj");

Invocable inv = (Invocable) engine;

// get Runnable interface object from engine. This interface methods
// are implemented by script methods of object 'obj'
Runnable r = inv.getInterface(obj, Runnable.class);

// start a new thread that runs the script implemented
// runnable interface
Thread th = new Thread(r);
th.start();
}
}
====================================================================================

If you enjoyed this post Subscribe to our feed


No Comment

댓글 쓰기