以简单的方式消除Java冗余

发表于:2010-4-14 10:25

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

分享:

  清单 5. 修改 hashCode()

@EqualsAndHashCode(exclude="style")
public @Data class Lure {
private String name;
private int size;
private String color;
private String style;
}

  在本例中,当 equals() 和 hashCode() 方法生成时,style 属性并没有被包括。

  其他特性

  您是不是也一直非常痛恨编写 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 同步这个方法。在这种情况下,必须显式地定义它。

  结束语

  使用 Lombok,可以实现所有应用程序开发人员都竭尽全力实现的一个目标:消除冗余。

  您还可以让您的代码可读性更好。在 Java bean 内寻找 “特殊”(即不遵循典型的标准)的具有大量属性的 getter 和 setter 方法将更为简便。这是因为只有这些特殊的 getter/setter 方法是需要被实际编码的。

  Lombok 有助于代码的整洁、效率的提高以及冗余的减少。为何不在您自己的环境内尝试一下呢?

33/3<123
价值129的会员专享直播免费赠送,添加微信领取听课名额哦~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号