2013-08-21 81 views
0

是什麼以下常規初始化之間的差異:Groovy的建設者和豆初始化性能

def valuesMap = [:] 

// method 1 
def myBeanInstance1 = new MyBean() 
myBeanInstance1.properties = valuesMap 

// method 2 
def myBeanInstance2 = new MyBean(valuesMap) 

我觀察這2卻大相徑庭

+0

我猜測一個反射調用使分配和其他查詢類的MetaProperty找到數據類型並進行分配。這就是爲什麼我看到方法1比方法2(它使反射調用)更快。 –

+4

快多少?真的有足夠的擔心嗎? –

+0

加上w.r.t groovy beans,當方法1嘗試設置bean的'class'屬性時,'method 1'會失敗。 – dmahapatro

回答

0

myBeanInstance1.properties =因爲屬性爲只讀valuesMap是非法的。

方法2基本上調用了一個構造函數Groovy注入它將通過映射關鍵字與屬性名稱進行反射來設置屬性。