失樂園

          技術之路

          BlogJava 聯系 聚合 管理
            19 Posts :: 44 Stories :: 40 Comments :: 0 Trackbacks
             參考http://developer.51cto.com/art/201004/194014.htm
             下載后安裝:java -jar lombok.jar
          1import lombok.Data  
          2public @Data class xx
          3
          默認提供了getters 和 setters 以及equals 當且僅當javabean中每一個屬性相同時,輸出true;

          在生成 getter/setter 方法時,Lombok 遵從傳統的標準。所有這些方法名都以 getset 開頭并且屬性名都是大寫的。當然,如果屬性是一個 Boolean,情況例外。在這種情況下,getter 以 is 開始,而非 get。這是 Java bean 的一種標準實踐;
          hashcode 當JavaBean 輸出數字;
          toString 輸出Class 和每個屬性的打印列表;

          修飾Getter方法的訪問權限
          @Getter(AccessLevel.PROTECTED) 修飾getter方法的訪問權限
          @Setter(AccessLevel.PROTECTED) 修飾setter方法的訪問權限


          @Getter(AccessLevel.PROTECTED) 
          private int size;

          排除某一個特定字段重寫toString方法:

          1@ToString(exclude="color")
          2public @Data class Lure {
          3private String name;
          4private int size;
          5private String color;
          6private String style;
          7}


           

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


          清單 6. 使用 @Cleanup 注釋
                      public static void main(String[] args) throws IOException {
                      @Cleanup InputStream in = new FileInputStream(args[0]);
                      @Cleanup OutputStream out = new FileOutputStream(args[1]);
                      //write file code goes here
                      }
                                  

          上述代碼較我們通常在標準 Java 代碼內看到的整潔了很多。請注意您還是需要拋出由被調用代碼捕獲的異常(在本例中,為 IOException)。

          清單 6 中的這個代碼塊不僅消除了 try/catch/finally 塊,而且還關閉了開放流。如果您處理的對象使用一個方法而不是 close() 來釋放資源,那么就需要用一個帶附加說明的注釋調用該方法。比如,@Cleanup("relinquish")

          Lombok 還可以減少同步方法所需的代碼的冗余。很自然,這是用 @Synchronized 方法實現的。


          清單 7. 使用 @Synchronized 注釋
                      @Synchronized
                      private int foo() {
                      //some magic done here
                      return 1;
                      }
                                  

          在本例中,Lombok 會自動創建一個名為 $lock 的實例對象,并會針對該對象同步方法 foo()

          如果用 @Synchronized 注釋的這個方法是靜態的,那么 Lombok 就會創建一個名為 $LOCK 的類對象,并會針對該對象同步這個方法。

          您還可以指定一個對象用以通過一個附加參數進行顯式的鎖定。比如,@Synchronized("myObject") 會針對對象 myObject 同步這個方法。在這種情況下,必須顯式地定義它。


           

          posted on 2010-04-26 09:51 狄浩 閱讀(8336) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 鸡西市| 全椒县| 永泰县| 色达县| 密山市| 浦北县| 怀宁县| 云龙县| 渭源县| 马边| 社旗县| 湖南省| 娄底市| 共和县| 张北县| 逊克县| 固阳县| 嘉荫县| 宁河县| 灌云县| 西吉县| 乐至县| 荆门市| 瑞安市| 湟中县| 会昌县| 青海省| 梁平县| 高平市| 荃湾区| 新密市| 涞源县| 化州市| 措美县| 宜丰县| 焦作市| 临清市| 庆阳市| 靖宇县| 遂昌县| 新巴尔虎右旗|