失乐园

技术之路

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 狄浩 阅读(8329) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: