发现神奇的lombok
来源:互联网 发布:武汉知金教育怎么样 编辑:程序博客网 时间:2024/05/22 00:09
项目主页:http://projectlombok.org/index.html
源码github主页:https://github.com/rzwitserloot/lombok/tree/master/src
lombok这个名字很大名鼎鼎的j2ee插件lomboz十分相像。lombok貌似也是一个插件,但是它的功能强大得有些让人难以置信。
我们先来看看为什么需要lombok?
lombok是一种代码生成器,它可以为我们生成如下一些代码:
1.封装属性的Getter Setter代码
2.参构造器
3.静态工厂
4.默认的toString()和equals()
另外lombok还制造了非常有趣的一些语法糖,如下举了一些例子:
1.使用val做泛型自动推断(用val估计是考虑到jdk以后版本会使用var关键字)
2.使用@CleanUp自动关闭流
3.使用@SneakyThrows来包装Exception为RuntimeException。
这样看下来,lombok的目标已经显而易见了。它和jquery一样,目标是让程序员写更少的代码,以及改进一些原始语法中不尽人意的地方。
lombok能做到这一点。既不是用annotations process,也不是用反射。而是直接黑到了编译过程。
而我们如果想要享受lombok所带来的神器效果,需要做的仅仅只是将lombok像普通jar包一样导入工程即可。
是否很奇妙呢?赶紧试试吧,下面是我贴出的一段实例代码:
package lombok;import java.util.ArrayList;import java.util.Arrays;import java.util.List;//只可以指定of(白名单)和exclue(黑名单)之一。@ToString(of={"name","both"},doNotUseGetters=true,includeFieldNames=true,callSuper=false)//等于Eclipse的重构Generator特性。@RequiredArgsConstructor(access=AccessLevel.PUBLIC,staticName="newTestByFactory")//仅针对final系列强制初始化@AllArgsConstructor(access=AccessLevel.PROTECTED) //构造包含所有memeber参数的构造器,可指定access级别@EqualsAndHashCode(exclude={"both"},doNotUseGetters=true) //与ToString系列的规则基本相同public class GenerateMemeber {@Getter(value=AccessLevel.PROTECTED,lazy=true) private final int[] foo=expensiveCreate();//构造Getter,可以声明为lazy来获取仅初始化一次的对象。注意该对象必须为final类型@Getter @Setter(AccessLevel.PROTECTED) private int both;//可以指定Setter为特殊访问限定符//事实上在类载入阶段即立即产生了private int[] expensiveCreate() {System.out.println("lazy create it!");int[] large=new int[1000];for(int i=0;i<large.length;i++) large[i]=i;return large;}private Foo inner=new Foo();@NonNull final String name;//标记为NonNull的若在构造阶段获得null,则自动抛出异常@ToString//ToString不能深层次的处理。只是简单调用object.toString() 故需要对自定义类型再次标注public static class Foo{String a="123";List<Integer> list=Arrays.asList(5,8,4,2,1);}public static void main(String[] args) {//测试lazyGenerateMemeber test=new GenerateMemeber("tester");System.out.println(test.toString());System.out.println(test.getFoo());System.out.println(test.getFoo());//测试类型推断val playList=new ArrayList<String>();playList.add("1");playList.add("2");System.out.println(playList);//测试工厂方法和非空GenerateMemeber test2=GenerateMemeber.newTestByFactory(null);System.out.println(test2);}}
事后本人想尝试在android中使用lombok。可惜并没有成功,lombok中针对Constructor指定的AccessLevel不知为何没有效果。而lombok1.3MB的庞大体积对于android项目来说又是体积过大。eclipse上提示编译成功并生成apk包后,却无法最终安装。尝试用winrar也无法打开apk包,看来lombok做的编译手脚已经影响到打包了。
虽然在移动平台上lombok使用失败了。但是在服务器和桌面应用端,lombok真是个十分火辣迷人的利器。
- 发现神奇的lombok
- 偶然发现的神奇
- 发现一个神奇的东西
- site百度发现好神奇的事
- 发现ffmpeg真是个神奇的东西
- HIGHCHARTS意外发现的一个神奇的网站
- 才发现的QQ强制视频软件,神奇
- 发现一个神奇的网站,微软全系产品下载
- 18. 4Sum 加 神奇的发现加疑问。。。
- activeMQ指南针_“神奇”的自动发现功能
- 可爱的Lombok
- lombok的使用
- Lombok 的使用
- lombok造成的StackOverflowError
- lombok的使用
- lombok插件的使用
- lombok的使用
- Lombok的安装、使用说明
- GetClipBox 在scrollview中使用注意事项
- Oracle 回收站功能,彻底删除表
- 设计模式之一:Abstract Factory 抽象工厂
- Unix系统文件权限管理
- The New C++ -- 基础知识
- 发现神奇的lombok
- Windows 8一推出就会死亡?
- 苹果黄牛事件真相
- 分页类的使用
- 语言设计的艺术——读《松本行弘的程序世界》
- 关于个人开发游戏的一些经验
- 在UltraEdit中使用正则表达式
- Lucene入门
- Oracle TRCA 工具 说明