2011-10-21 31 views
2

當使用GroovyClassLoader時,我應該何時使用loadClass以及何時應該撥打parseClassparseClass loadClass groovy

如果我明白了,第一次調用loadClass()會編譯腳本,隨後的調用將使用緩存的類文件而不是重新編譯它。

那麼parseClass呢?

+0

我編輯了您的問題,嘗試使其可讀。我保持這個問題是否一樣? –

+0

@tim。是的,這是一樣的謝謝 – anish

回答

4

documentation for parseClass表明它需要一個包含Groovy代碼的文件或字符串,並將其轉換爲類。

如果函數傳遞了一個File,那麼GroovyClassLoader會緩存這個生成的類,但是如果它傳遞了一個String,那麼它就是will not cache it

功能loadClass(從the documentation)說:

加載一個類文件或父類加載器。

它的基本功能是查找classLoader中已存在的類,如果找不到它,請在磁盤上查找具有匹配名稱的腳本文件。

一旦這個類被加載,它將被緩存。下次您撥打loadClass時,它將使用此緩存類別,除非您通過的false。如果您通過false,它將嘗試再次找到磁盤上的腳本,如果需要的話,recompile the class