我正在研究Java中的API,它允許用戶編寫腳本並訪問由Nashorn腳本引擎傳入(以API對象的形式)的特定一組方法。將JavaScript日期提供給Nashorn腳本
我想在JavaScript中調用函數getDate(),它將返回一些從Java端提供的任意日期(作爲本地JavaScript日期)。
我試着簡單地把一個org.java.util.Date放在API對象上,但那不會像JS日期那樣工作。我們的目標是儘可能簡化對JS有經驗的最終用戶。
的Java實施例:
public class MyAPI {
public void log(String text){
System.out.println(text);
}
public Date getDate(){
// Return something that converts to a native-JS date
}
public static void main(){
// MyClassFilter implements Nashorn's ClassFilter
ScriptEngine engine = new NashornScriptEngineFactory().getScriptEngine(new MyClassFilter());
((Invokable) engine).invokeFunction("entryPoint", new MyAPI());
}
JavaScript示例
function entryPoint(myApi){
var date = myApi.getDate();
myApi.log(date.getMinutes());
}
謝謝,第二個選項做到了!僅供參考,我需要這樣做,因爲API中的方法調用了大量的Java代碼。 –
@MoscowModder如果你尋找任何可以使用'print(Date.prototype)'的Javascript對象的本地類,當然用你尋找的任何對象替換'Date'。在Date的情況下,你會得到如下內容:'jdk.nashorn.internal.objects。NativeDate $ @原型b7f23d9' –