日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
以簡單的方式消除Java冗余

Lombok是一種JavaArchive(JAR)文件,可用來消除Java代碼的冗長。通過在開發(fā)環(huán)境中實現(xiàn)Lombok,開發(fā)人員可以節(jié)省構(gòu)建諸如hashCode()和equals()這樣的方法以及以往用來分類各種accessor和mutator的大量時間。

創(chuàng)新互聯(lián)公司主營龍巖網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā),龍巖h5成都微信小程序搭建,龍巖網(wǎng)站營銷推廣歡迎龍巖等地區(qū)企業(yè)咨詢

我們看這樣一個例子,一個標(biāo)準(zhǔn)的Javabean。一個典型的Javabean一般具有幾個屬性。每個屬性具有一個accessor和mutator(getter和setter)。通常還會有一個toString()方法、一個equals()方法和一個hashCode()方法。初看上去,其中可預(yù)見的冗余就已經(jīng)非常多了。如果每個屬性都具有一個getter和setter,并且通常如此,那么又何必詳細(xì)說明呢?

讓我們來看看Lombok。為了消除代碼行,Lombok使用注釋來標(biāo)識類和Java代碼塊。在前述的那個Javabean示例中,所有的getter、setter以及其他三個方法都是在編譯時被暗示并包括進(jìn)來的。

而且更好的是如果您使用的是Eclipse或IBM?WebSphere?StudioApplicationDeveloper(如果還沒用的話,建議最好使用),您就可以將Lombok集成到Java項目并即刻獲得開發(fā)時結(jié)果。換言之,Eclipse編譯器可以立即識別所暗指的getters/setters,而其他Java代碼則可引用這些方法。

最直接的好處當(dāng)然是代碼行的減少,這真的很棒。并且,如果有一個特定的getter或setter需要特別的注意,那么您就不必為了找到這個特定的getter或setter而遍歷數(shù)十行代碼。代碼也會更為簡潔并且冗余也少了。

Lombok還讓您得以簡化代碼的其他部分—不僅僅是Javabean。比如,還可以減少try/catch/finally塊內(nèi)以及同步方法內(nèi)的冗余代碼?,F(xiàn)在,我們來看看在您自己的開發(fā)環(huán)境中如何能實現(xiàn)上述目的。

安裝Lombok

要進(jìn)行安裝,本文假設(shè)您使用的是Eclipse或WebSphereStudioApplicationDeveloper。如果不是,您仍可使用Lombok;但是不能享用開發(fā)時的種種益處。不過,您仍然可以享用編譯時的益處。首先,打開您的瀏覽器并將URL指向http://projectlombok.org/。

在撰寫本文之時,用這個URL打開的頁面的右上角會出現(xiàn)一個很大的單詞。這個單詞是“Download”。單擊該單詞并開始下載lombok.jar。此文件無需解壓縮,而從其他站點(diǎn)下載的文件中,99%都需要解壓縮。

下載此文件后,需要執(zhí)行這個JAR文件。在您的操作系統(tǒng)中打開一個提示符,進(jìn)入到安裝了lombok.jar的那個目錄,并鍵入java-jarlombok.jar。以上假設(shè)在您的路徑內(nèi)已經(jīng)有JavaRuntimeEnvironment(JRE)。如果沒有,需要添加它。如果要了解如何添加,可以參考針對您的具體操作系統(tǒng)的相關(guān)文檔。如果您使用的是Microsoft?Windows?,那么還可以雙擊這個lombok.jar圖標(biāo)。同樣地,您必須能夠從您的圖形用戶界面(GUI)執(zhí)行JAR。

不管采取何種方式,應(yīng)該最終都能看到一個Lombok安裝屏幕。該屏幕會提問Eclipse或WebSphereStudioApplicationDeveloper可執(zhí)行文件位于何處。它的默認(rèn)位置有可能是正確的。但有時可能需要更改這個默認(rèn)位置。單擊Install/Update,Lombok會被迅速并入Eclipse開發(fā)環(huán)境。如果已經(jīng)運(yùn)行了Eclipse,那么就需要關(guān)閉它并重啟。

使用Lombok

現(xiàn)在,就可以在Eclipse或WebSphereStudioApplicationDeveloper內(nèi)開始使用Lombok了。請參考清單1內(nèi)的代碼。

 
 
 
  1. 清單1.Javabean的一個良好開端  
  2. publicclassLure{  
  3.  privateStringname;  
  4.  privateintsize;  
  5.  privateStringcolor;  
  6.  privateStringstyle;  

以上是一個簡單的Javabean的典型開始。從這里,可以為每個屬性添加getters和setters。然后再添加一個equals()方法、一個toString()方法和一個hashCode()方法。有了Lombok,您無需自己完成上述操作。相反,您只需添加一個注釋:@Data。沒錯,就這么簡單。清單2中包括了@Data。

 
 
 
  1. 清單2.Javabean的一個更好的開端  
  2. importlombok.Data  
  3. public@DataclassLure{  
  4.  privateStringname;  
  5.  privateintsize;  
  6.  privateStringcolor;  
  7.  privateStringstyle;  

不過請記住,只有當(dāng)lombok.jar位于您的構(gòu)建路徑且lombok.Data被導(dǎo)入到這個Java類時,上述代碼才會奏效。如果在Eclipse或WebSphereStudioApplicationDeveloper內(nèi)查看這個類的概要(通常位于屏幕上這個類的右側(cè)),就能看到這些方法會被自動添加到這個Lure類。

若不能立即看到這個概要,可以單擊Eclipse內(nèi)的Window菜單,然后選擇ShowView。從所出現(xiàn)的彈出菜單中,選擇Outline,它應(yīng)該出現(xiàn)在屏幕的右側(cè)。強(qiáng)制顯示類的概要的熱鍵組合是Alt+Shift+Q,然后是O。

如果您編寫了另一個類來實例化Lure,您將能立刻擁有對Lure所暗指的方法(比如getName()或setSize())的訪問。您還能擁有對equals()、hashCode()和toString()的訪問。很棒,對吧?

如果您使用的不是Eclipse或WebSphereStudioApplicationDeveloper,那么所暗指的這些方法添加只有在實際編譯這些代碼時才能被認(rèn)可。所以雖然在沒有Eclipse或WebSphereStudioApplicationDeveloper時仍可以使用Lombok,但Lombok最初的設(shè)計目的就是與Eclipse或WebSphereStudioApplicationDeveloper相集成。

在生成getter/setter方法時,Lombok遵從傳統(tǒng)的標(biāo)準(zhǔn)。所有這些方法名都以get或set開頭并且屬性名都是大寫的。當(dāng)然,如果屬性是一個Boolean,情況例外。在這種情況下,getter以is開始,而非get。這是Javabean的一種標(biāo)準(zhǔn)實踐。

現(xiàn)在,假設(shè)有一個Javabean對您的一個getter具有特殊要求。在清單2的例子中,getStyle()可能返回顏色和大小的組合。在這種情況下,可以按自己的意愿編寫getStyle()方法的代碼。Lombok檢查您的代碼并且不會基于這個屬性創(chuàng)建其自己的getStyle版本。又假設(shè),您有一個getter方法不想公開。為此,Lombok讓您可以輸入一個附加參數(shù)。清單3給出了一個定制的修飾符(modifier)。

 
 
 
  1. 清單3.一個定制的修飾符  
  2. privateStringname;  
  3. @Getter(AccessLevel.PROTECTED)privateintsize;  
  4. privateStringcolor;  
  5. privateStringstyle; 

在本例中,getSize()方法將不會被公開。它具有一個受保護(hù)的修飾符,所以它只對派生子類可用并且在Lure類本身的內(nèi)部。您可能并不總是想接受Lombok為您提供的其他默認(rèn)值。比如,toString()方法會列出類名以及所有的屬性名和值,中間以逗號分割。這個列表出現(xiàn)在類名的旁邊。比如,假設(shè)在記錄這個Lure類時,您并不關(guān)心顏色。為了更改toString()的默認(rèn)設(shè)置,需要使用ToString注釋。 #p#

 
 
 
  1. 清單4.修改toString()  
  2. @ToString(exclude="color")  
  3. public@DataclassLure{  
  4.  privateStringname;  
  5.  privateintsize;  
  6.  privateStringcolor;  
  7.  privateStringstyle;  

若輸出一個實例化了的Lure類,它應(yīng)該看上去類似于:

 
 
 
  1. Lure(name=Wishy-Washy,size=1,style=trolling)
  2.  

注意到顏色沒有被包括?這是因為您之前用注釋告訴過Lombok不包括顏色。您還可以修改equals()和hashCode()方法該如何被處理。清單5很直白,不需要過多解釋。

 
 
 
  1. 清單5.修改hashCode()  
  2. @EqualsAndHashCode(exclude="style")  
  3. public@DataclassLure{  
  4.  privateStringname;  
  5.  privateintsize;  
  6.  privateStringcolor;  
  7.  privateStringstyle;  

在本例中,當(dāng)equals()和hashCode()方法生成時,style屬性并沒有被包括。

其他特性

您是不是也一直非常痛恨編寫try/catch/finally塊呢?我是這樣的。幸運(yùn)的是,有了Lombok,您無需這么做了。這也是Lombok消除Java冗余的另一種方式。為了消除try/catch/finally塊的冗余,只需使用@Cleanup注釋。參見清單6。

 
 
 
  1. 清單6.使用@Cleanup注釋  
  2. publicstaticvoidmain(String[]args)throwsIOException{  
  3. @CleanupInputStreamin=newFileInputStream(args[0]);  
  4. @CleanupOutputStreamout=newFileOutputStream(args[1]);  
  5. //writefilecodegoeshere  

上述代碼較我們通常在標(biāo)準(zhǔn)Java代碼內(nèi)看到的整潔了很多。請注意您還是需要拋出由被調(diào)用代碼捕獲的異常(在本例中,為IOException)。清單6中的這個代碼塊不僅消除了try/catch/finally塊,而且還關(guān)閉了開放流。如果您處理的對象使用一個方法而不是close()來釋放資源,那么就需要用一個帶附加說明的注釋調(diào)用該方法。比如,@Cleanup("relinquish")。Lombok還可以減少同步方法所需的代碼的冗余。很自然,這是用@Synchronized方法實現(xiàn)的。

 
 
 
  1. 清單7.使用@Synchronized注釋  
  2. @Synchronized  
  3. privateintfoo(){  
  4.  //somemagicdonehere  
  5.  return1;  

在本例中,Lombok會自動創(chuàng)建一個名為$lock的實例對象,并會針對該對象同步方法foo()。如果用@Synchronized注釋的這個方法是靜態(tài)的,那么Lombok就會創(chuàng)建一個名為$LOCK的類對象,并會針對該對象同步這個方法。您還可以指定一個對象用以通過一個附加參數(shù)進(jìn)行顯式的鎖定。比如,@Synchronized("myObject")會針對對象myObject同步這個方法。在這種情況下,必須顯式地定義它。

結(jié)束語

使用Lombok,可以實現(xiàn)所有應(yīng)用程序開發(fā)人員都竭盡全力實現(xiàn)的一個目標(biāo):消除冗余。

您還可以讓您的代碼可讀性更好。在Javabean內(nèi)尋找“特殊”(即不遵循典型的標(biāo)準(zhǔn))的具有大量屬性的getter和setter方法將更為簡便。這是因為只有這些特殊的getter/setter方法是需要被實際編碼的。Lombok有助于代碼的整潔、效率的提高以及冗余的減少。為何不在您自己的環(huán)境內(nèi)嘗試一下呢?


標(biāo)題名稱:以簡單的方式消除Java冗余
本文網(wǎng)址:http://www.5511xx.com/article/dheehpe.html