昨天買了Core Java2 第七版的上卷。開始閱讀就看到了許多J2SE的新特性,呵呵,很是激動(dòng)人心。我會(huì)發(fā)一系列的文章來(lái)介紹。首先這一篇講靜態(tài)導(dǎo)入,解決我上面的Config問(wèn)題。
本文分三個(gè)部分:
?
1,講述我上面遇到的Config問(wèn)題的大概和目前的解決方法
2,講述用了靜態(tài)導(dǎo)入后的解決方法
3,對(duì)靜態(tài)導(dǎo)入的介紹,簡(jiǎn)單實(shí)例。
2,講述用了靜態(tài)導(dǎo)入后的解決方法
3,對(duì)靜態(tài)導(dǎo)入的介紹,簡(jiǎn)單實(shí)例。
?
各位可以選讀。
?
----------------------------------------------
首先,問(wèn)題描述。
首先,問(wèn)題描述。
?
我看到了apache.commons下面有一個(gè)項(xiàng)目叫做Configuration。是這樣使用的:(以其中的PropertiesConfiguration類為例)
?

?
上面是實(shí)例化,讀入配置,然后便可以使用config提供的一系列方法獲取配置屬性,例如:
?



?
我要在系統(tǒng)中使用這個(gè)類,那么,我建立了一個(gè)自己的SystemConfig類,其中有一個(gè)靜態(tài)屬性,config,是PropertiesConfiguration類的對(duì)象。在系統(tǒng)初始化的時(shí)候,初始化這個(gè)config對(duì)象。我希望我將來(lái)用SystemConfig.getString(key)之類的靜態(tài)方法類獲取配置,卻又不能寫n各靜態(tài)方法來(lái)調(diào)用靜態(tài)屬性config的相應(yīng)方法。
?
所以我用了單態(tài)。最后的結(jié)果在客戶端是這樣的:
?

?
getInstance方法返回的是類中的靜態(tài)屬性config,這樣我就可以隨意調(diào)用config中的所有方法了。
?
但終究沒(méi)能做到ClassA.getXXX(key)這樣的獲取方式。
?
OK,問(wèn)題描述完畢
-----------------------------------------
?
?
J2SE 5.0中提供了一種全新的導(dǎo)入方式,以前的import只能導(dǎo)入包,類,現(xiàn)在這種導(dǎo)入方式,可以導(dǎo)入類的屬性,方法了。
?
先給出一個(gè)寫法:
?

?
注意其中多了一個(gè)static關(guān)鍵字。另外注意ConfigBuilder是一個(gè)類,而SystemConfig是這個(gè)類的一個(gè)屬性。相當(dāng)于現(xiàn)在我們把SystemConfig這個(gè)屬性導(dǎo)入到了當(dāng)前類。
來(lái)看我的ConfigBuilder類,其中定義了一個(gè)PropertiesConfiguration類的對(duì)象,作為public的屬性,還定義了一個(gè)init(String path)方法,用于初始化。
?
系統(tǒng)啟動(dòng)時(shí),調(diào)用ConfigBuilder.init(String path)方法,初始化其中的SystemConfig屬性。
?
然后再后面的其他類中,如上這樣寫:
?

?
那么在這個(gè)類中,就可以象下面這樣獲取配置了:
?





?
從而實(shí)現(xiàn)了我的目標(biāo)。
?
------------------------------------------------
下面是對(duì)J2SE 5.0中的靜態(tài)導(dǎo)入的一點(diǎn)介紹:
?
例如,我在程序開始這樣寫:
?

?
那么在我的程序中,就可以這樣寫:
?

?
我想一看這個(gè)例子,你就明白是怎么回事了。
?
前面都是導(dǎo)入屬性,下面是導(dǎo)入方法的例子:
?

?
然后你求開放就可以這樣寫
?

?
---------------------------------------
?
更多的信息可以在網(wǎng)上獲取。