ScriptEngine高階技巧

2023-02-11 02:36:03 字數 1481 閱讀 2659

scriptengine 高階技巧2(jdk 6.0)

scriptengine 預定於全域性變數其實jdk scriptengine預定於全域性變數和預定於funciton是一樣的,都需要global_scope型別的bindings物件。想想就很簡單了 bindings globalbindings = "valu

scriptengine 預定於全域性變數

其實jdk scriptengine預定於全域性變數和預定於funciton是一樣的,都需要global_scope型別的bindings物件。想想就很簡單了

1. bindings globalbindings = "valuename","value");

這樣一來,所有createbindings得到的bindings物件都具有乙個valuename的全域性變數,值是」value」字串。只要在script中直接使用valuename變數就可以得到這個值。

很簡單,但可以引申乙個功能。比如,我們希望有個變數,一直保持的是當前時間的毫秒數,什麼時候呼叫,就是什麼時候的值。通常做法都是寫乙個 function getcurrenttimemillis(),在呼叫的時候返回當前的時間。

但可以簡化成乙個變數,用起來更爽。

事情是這樣的。還是bindings物件,這個物件是map的子類,儲存了所有執行時的變數,區域性變數會在結束時候刪除,全域性變數一直儲存。在script執行到一處需要知道變數的值,如:

result = a + b;

a和b沒有在之前的script中宣告,scriptenging會在當前的bindings物件中找a和b的值。過程很沒懸念,就是先用map的 containskey()看看bindings中有沒有乙個叫a的變數。如果有,就用map中的get()方法將a的值取出來。

否則會報乙個「沒有找到變數的異常」(忘記英文是怎麼報的了,就是這個意思)。

知道了運作方式,改出乙個表示時間的變數就超easy了。

思路是這樣的,實現乙個bindings的子類,覆蓋get,在get某個key的時候返回特點的值。然後將這個bindings的物件賦給global_scope,就ok了 。

code:

1. scriptenginemanager manager = new scriptenginemanager();

2. scriptengineengine = "j**ascript");

3.4. bindingsbindings = new ******bindings()else

15. }

16. };

17.18. 把這個binding物件設定成全域性範圍

這樣在script中只要出現currenttime這個變數,什麼時候執行那麼就什麼時候呼叫j**a的方法。當前時間的毫秒值就得到了。

除了時間還可以引申出很多變數,比如機器ip,使用的埠,只要j**a能得到的,script就能有乙個變數表示。更關鍵的是速度快。

變數就講這些了,下一次再介紹呼叫第三方dom4j包操作xml。

原文出處:中軟卓越

鑽井地質工理論知識題庫2019新版 高階技師

高階技師理論知識試題 一 選擇題 每題有4個選項,其中只有1個是正確的,請將正確的選項號填入括號內 1 下列工作內容中屬於地質生產技術管理工作範疇的是 c a 岩屑描述 b 岩心描述 c 基礎資料檢查 d 岩屑挑樣 2 下列工作內容中屬於地質生產技術管理工作範疇的是 d a 油砂挑樣b 槽面顯示資料...

2023年專技人員公需科目培訓中高階題庫

一 單選題 本大題共30小題,每小題2分,共60分 顯示答案 顯示答案 顯示答案 參 c 85 試題解析 顯示 顯示答案 參 b 雲計算 試題解析 顯示 顯示答案 顯示答案 顯示答案 顯示答案 參 b 海量資料儲存 試題解析 顯示 顯示答案 顯示答案 參 a 珊瑚 兩棲類 獸類 試題解析 顯示 顯示...

2023年專技人員公需科目培訓中高階模擬題

考試人員 試卷總分 100 考試總時長 45分鐘參 錯誤 試題解析 顯示 顯示答案 參 正確 試題解析 顯示 顯示答案 參 正確 試題解析 顯示 顯示答案 參 正確 試題解析 顯示 顯示答案 參 錯誤 試題解析 顯示 顯示答案 參 錯誤 試題解析 顯示 顯示答案 參 正確 試題解析 顯示 顯示答案 ...