在Android中使用Lombok减少编码
来源:互联网 发布:数据库免费账号 编辑:程序博客网 时间:2024/05/21 23:34
Lombok的介绍,可以看官网的一段视频 https://projectlombok.org/。
说得简单一点,该框架可以用来精简java代码,提升开发效率,利用注解在编译期生成getter/setter/toString()/hash/equals/construct等等方法。在web中用得比较多,但是在android上估计用得少之又少。个人认为在没有很好的评估该框架的兼容性前,在实际生成项目中最好不要使用。当然,在自己用来写demo的时候倒可以用来一试,怎一个爽字了得。
关于该框架,官方的android的接入文档地址在:https://projectlombok.org/setup/android.html,当然stackoverflow上也有接入相关的信息:http://stackoverflow.com/questions/21344692/how-to-set-up-compile-library-in-android-studio-lombok,甚至还有人问有没有什么原因不要在android中使用lombok:http://stackoverflow.com/questions/34366010/are-there-reasons-not-to-use-lombok-with-android-studio?noredirect=1&lq=1,使用过程中遇到任何问题可以去github上看看有没有相应的issue:https://github.com/rzwitserloot/lombok
不管别人怎么说,总得自己试一试才知道有多爽,首先安装一个插件。具体安装方法就直接贴官方的了:
- Go to File > Settings > Plugins
- Click on Browse repositories…
- Search for Lombok Plugin
- Click on Install plugin
- Restart Android Studio
然后在项目中以provided的形式依赖该库
provided "org.projectlombok:lombok:1.16.10"
我们先写一个java bean,就以典型的Person类来举例。
public class Person { private String name; private int age; private String address;}
如果我们要生成getter和setter方法,会使用control+enter选择getter and setter方法进行自动生成,当然还有其他方法,比如toString等等,应该没有人蠢到一个一个方法去手写吧???
现在我们看看使用了Lombok框架后我们的Person类变成了什么样子,不做任何操作前,看一下类结构:
然后在项目根目录下新建一个lombok.config配置文件,加入两行配置
lombok.anyConstructor.suppressConstructorProperties = truelombok.addGeneratedAnnotation = false
两个配置的作用是禁用掉一些在android上不存在的类,这些类在标准java中才存在。
现在我们在Person类上加入注解@Data,代码如下:
@Datapublic class Person { private String name; private int age; private String address;}
再看一下类结构
多了好多getter和setter方法,以及toString、equals等方法。
再加两个注解用于生成构造函数
@NoArgsConstructor@AllArgsConstructor
看下类结构是否生成了空的构造函数和全参数的构造函数
代码中使用一下,如果能编译通过并且能成功运行,则没有什么问题
Person p = new Person(); p.setName("区长"); p.setAge(100); p.setAddress("杭州"); Log.e("TAG", p + ""); Person p1 = new Person("区长",123,"西湖区"); Log.e("TAG", p1 + "");
运行结果
如果你接触过脚本语言,肯定知道脚本语言中支持var来声明变量,具体类型会自动推测,同样,使用了Lombok后也是支持的,我们可以在代码中直接使用关键字val,至于为什么不是var,大概是Lombok认为在java中,后面可能会使用var关键字。具体例子如下,声明一个list泛型,存入之前的两个person对象,并打印输出:
val list=new ArrayList<Person>();list.add(p);list.add(p1);Log.e("TAG", list + "");
效果如下:
作为一个程序员,你一定写过很多判空的代码,Lombok中有一个@NonNull注解,注意不是android support包下的注解,可以生成一段判空的代码,如果值为空,会抛出空指针异常。如下:
public boolean isEmpty(@NonNull String value) { return true; }
反编译后可以看到生成的代码如下:
public boolean isEmpty(@NonNull String value) { if(value == null) { throw new NullPointerException("value"); } else { return true; } }
Lombok中的注解不止上面介绍的几个,其他注解自己去挖掘吧,可以看到,使用了Lombok后可以给我们带来一定的方便,还是可以一试的~~
- 在Android中使用Lombok减少编码
- 在eclipse中使用Lombok
- 在eclipse中使用Lombok
- 在eclipse中使用Lombok
- 在eclipse中使用Lombok
- 在eclipse中使用Lombok
- 在eclipse中使用Lombok
- 在eclipse中使用Lombok
- 在eclipse中使用Lombok
- 在eclipse中使用Lombok
- lombok在idea中安装以及使用
- 使用 Lombok 减少你的样板代码
- 使用lombok提高编码效率
- Android Studio 使用 lombok
- Android Stduio 使用Lombok
- Android上使用Lombok
- eclipse中使用Lombok
- Eclipse中使用lombok
- 43. Multiply Strings
- 万维网
- android studio 加入极光推送 出现获取sdk版本失败的问题 JPush .so file do not match JPush .jar file in the project
- Java内存模型总结
- oracle:imp一个.dmp文件中的部分表,目标库中不能存在该表
- 在Android中使用Lombok减少编码
- 第一周《C语言及程序设计》视频笔记数据的输入
- c++ 调用 oc
- itoa的实现
- ListView中嵌套ListView
- scrollView ——自动轮播并且设置图片底部小圆点
- Android ANR问题
- Android中 "WebView"的使用
- codeforces 703C