Lombok(1.14.8)的简单示例
分享自: http://blog.csdn.net/huey2672/article/details/42240985
Lombok是一种Java™实用工具,可用来帮助开发人员消除Java的冗长,尤其是对于简单的Java对象(POJO)。它通过注释实现这一目的。通过在开发环境中实现Lombok,开发人员可以节省构建诸如hashCode()和equals()这样的方法以及以往用来分类各种accessor和mutator的大量时间。
下载安装Lombok
1. 下载lombok.jar,http://projectlombok.org/
2. 找到MyEclipse的安装目录下的myeclipse.ini文件,在文件末尾添加以下两行:
-Xbootclasspath/a:lombok.jar
-javaagent:lombok.jar
3. 重启MyEclipse。
Lombok使用的简单示例
1. @Getter和@Setter,实现了Getter和Setter方法:
- package com.huey.dream.beans;
- import java.util.Date;
- import lombok.Getter;
- import lombok.Setter;
- public class Student {
- @Getter @Setter
- private int studNo;
- @Getter @Setter
- private String studName;
- @Getter @Setter
- private Date birthday;
- public static void main(String[] args) {
- Student stud = new Student();
- stud.setStudName("huey");
- System.out.println(stud.getStudName());
- }
- }
结果输出:
- huey
2. @EqualsAndHashCode,实现了equals()和hashCode()方法:
- package com.huey.dream.beans;
- import java.util.Date;
- import lombok.EqualsAndHashCode;
- import lombok.Getter;
- import lombok.Setter;
- @EqualsAndHashCode
- public class Student {
- @Getter @Setter
- private int studNo;
- @Getter @Setter
- private String studName;
- @Getter @Setter
- private Date birthday;
- public static void main(String[] args) {
- Date today = new Date();
- Student stud1 = new Student();
- stud1.setStudNo(10001);
- stud1.setStudName("huey");
- stud1.setBirthday(today);
- Student stud2 = new Student();
- stud2.setStudNo(10001);
- stud2.setStudName("huey");
- stud2.setBirthday(today);
- System.out.println(stud1.hashCode());
- System.out.println(stud2.hashCode());
- System.out.println(stud1.equals(stud2));
- }
- }
结果输出:
- -1678491668
- -1678491668
- true
3. @ToString,实现了toString()方法:
- package com.huey.dream.beans;
- import java.util.Date;
- import lombok.Getter;
- import lombok.Setter;
- import lombok.ToString;
- @ToString
- public class Student {
- @Getter @Setter
- private int studNo;
- @Getter @Setter
- private String studName;
- @Getter @Setter
- private Date birthday;
- public static void main(String[] args) {
- Date today = new Date();
- Student stud = new Student();
- stud.setStudNo(10001);
- stud.setStudName("huey");
- stud.setBirthday(today);
- System.out.println(stud);
- }
- }
结果输出:
- Student(studNo=10001, studName=huey, birthday=Mon Dec 29 21:04:17 CST 2014)
4. @Data, 相当上述三个annotation:
- package com.huey.dream.beans;
- import java.util.Date;
- import lombok.Data;
- @Data
- public class Student {
- private int studNo;
- private String studName;
- private Date birthday;
- public static void main(String[] args) {
- Date today = new Date();
- Student stud1 = new Student();
- stud1.setStudNo(10001);
- stud1.setStudName("huey");
- stud1.setBirthday(today);
- Student stud2 = new Student();
- stud2.setStudNo(10001);
- stud2.setStudName("huey");
- stud2.setBirthday(today);
- System.out.println(stud1.hashCode() - stud2.hashCode());
- System.out.println(stud1.equals(stud2));
- System.out.println(stud1);
- }
- }
结果输出:
- 0
- true
- Student(studNo=10001, studName=huey, birthday=Mon Dec 29 21:05:32 CST 2014)
5. @NoArgsConstructor,提供一个无参的构造方法:
- package com.huey.dream.beans;
- import java.util.Date;
- import lombok.Data;
- import lombok.NoArgsConstructor;
- @NoArgsConstructor
- @Data
- public class Student {
- private int studNo;
- private String studName;
- private Date birthday;
- public Student(int studNo, String studName, Date birthday) {
- super();
- this.studNo = studNo;
- this.studName = studName;
- this.birthday = birthday;
- }
- public static void main(String[] args) {
- Date today = new Date();
- Student stud = new Student();
- stud.setStudNo(10001);
- stud.setStudName("huey");
- stud.setBirthday(today);
- System.out.println(stud);
- }
- }
结果输出:
- Student(studNo=10001, studName=huey, birthday=Mon Dec 29 21:15:00 CST 2014)
6. @AllArgsConstructor,提供一个全参的构造方法:
- package com.huey.dream.beans;
- import java.util.Date;
- import lombok.AllArgsConstructor;
- import lombok.Data;
- @AllArgsConstructor
- @Data
- public class Student {
- private int studNo;
- private String studName;
- private Date birthday;
- public static void main(String[] args) {
- Date today = new Date();
- Student stud = new Student(10001, "huey", today);
- System.out.println(stud);
- }
- }
结果输出:
- Student(studNo=10001, studName=huey, birthday=Mon Dec 29 21:10:37 CST 2014)
7. @Synchronized,实现同步
- package com.huey.dream.foo;
- import java.util.Date;
- import lombok.Synchronized;
- public class Foo implements Runnable {
- @Override
- public void run() {
- sayHello();
- }
- @Synchronized
- public void sayHello() {
- System.out.println("hello, " + Thread.currentThread().getName() +"! Now is " + new Date());
- try {
- Thread.sleep(3000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- Foo foo = new Foo();
- new Thread(foo).start();
- new Thread(foo).start();
- }
- }
结果输出:
- hello, Thread-0! Now is Mon Dec 29 21:38:26 CST 2014
- hello, Thread-1! Now is Mon Dec 29 21:38:29 CST 2014
8. @SneakyThrows,抛出异常
- package com.huey.dream.foo;
- import java.util.Date;
- import lombok.SneakyThrows;
- public class Foo {
- @SneakyThrows
- public void sayHello() {
- System.out.println("hello, " + Thread.currentThread().getName() +"! Now is " + new Date());
- Thread.sleep(3000);
- }
- public static void main(String[] args) {
- new Foo().sayHello();
- }
- }
9. @Cleanup,关闭流,如果最后清理资源的方法不是close(),可以指定,@Cleanup("clean"):
- package com.huey.dream.foo;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileReader;
- import java.io.IOException;
- import lombok.Cleanup;
- public class Foo {
- public void bar(String path) throws IOException {
- File file = new File(path);
- @Cleanup
- FileReader fr = new FileReader(file);
- BufferedReader br = new BufferedReader(fr);
- // ...
- }
- }
10. @NonNull,生成一个非空检查:
- package com.huey.dream.foo;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileReader;
- import java.io.IOException;
- import lombok.Cleanup;
- import lombok.NonNull;
- public class Foo {
- public void bar(@NonNull String path) throws IOException {
- File file = new File(path);
- @Cleanup
- FileReader fr = new FileReader(file);
- BufferedReader br = new BufferedReader(fr);
- // ...
- }
- }
11. @Logs,生成一个日志对象:
- package com.huey.dream.foo;
- import lombok.extern.java.Log;
- @Log
- public class Foo {
- public static void main(String[] args) {
- log.info("This is an info message.");
- }
- }
除了,Log还有其他annotation来封装一些主流的日志类库:
@CommonsLog
Creates private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(Foo.class);
@Log
Creates private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(Foo.class.getName());
@Log4j
Creates private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(Foo.class);
@Log4j2
Creates private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(Foo.class);
@Slf4j
Creates private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(Foo.class);
@XSlf4j
Creates private static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(Foo.class);
Lombok(1.14.8)的简单示例的更多相关文章
- boost计算随机数和计算crc32简单示例
boost计算随机数和计算crc32简单示例 - jwybobo2007的专栏 - 博客频道 - CSDN.NET boost计算随机数和计算crc32简单示例 2013-02-18 17:14 10 ...
- Redis 安装与简单示例
Redis 安装与简单示例 一.Redis的安装 Redis下载地址如下:https://github.com/dmajkic/redis/downloads 解压后根据自己机器的实际情况选择32位或 ...
- 为Lua5.3编写C模块简单示例
为Lua5.3编写C模块简单示例 一.编译安装Lua5.3 MSVC 命令行安装脚本: @echo off md bin md lib md include cd src cl /c /nologo ...
- SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 SignalR 简单示例 通过三个DEMO学会SignalR的三种实现方式 SignalR推送框架两个项目永久连接通讯使用 SignalR 集线器简单实例2 用SignalR创建实时永久长连接异步网络应用程序
SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 异常汇总:http://www ...
- web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例
Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ...
- Unity3d-通过简单示例来理解Time.deltaTime
转载文章: Unity3d-通过简单示例来理解Time.deltaTime 2018年04月21日 18:04:14 Black_Window 阅读数:926 标签: UnityTime 更多 个人分 ...
- Websocket - Websocket原理(握手、解密、加密)、基于Python实现简单示例
一.Websocket原理(握手.解密.加密) WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符.它实 ...
- rabbitmq 简单示例(Hello World)
一:消息中间件: AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计 RabbitMQ是实现AMQP( ...
- thrift简单示例 (基于C++)
这个thrift的简单示例, 来源于官网 (http://thrift.apache.org/tutorial/cpp), 因为我觉得官网的例子已经很简单了, 所以没有写新的示例, 关于安装的教程, ...
随机推荐
- PHP开发——数据类型
概述 l 变量就是一个容器,变量本身并没有类型,变量的类型解决值的类型. l PHP和JS都属于弱类型语言,变量在运行过程中,类型是可以变的.但是,Java不可以. l 标量(基本)数据类型:字 ...
- Python开发——函数【迭代器、生成器、三元表达式、列表解析】
递归和迭代 小明问路篇解释说明 递归:小明——>小红——>小于——>小东:小东——>小于——>小红——>小明 小明向小红问路,因小红不知道,所以向小于问路,因小于不 ...
- Connection lost: The server closed the connection
想必很多初学者都会遇到这个问题 其实很简单.mysql有个机制,就是8小时无通信,myslq就会自动关闭数据; 解决方案(2选1): 或者: 1.定时去做一个查询,就是 select * from X ...
- 设计模式学习心得<汇总>
绝大部分程序员其实用不上设计模式. - 创建 结构 行为 描述 在软件工程中,创建型模式是处理对象创建的设计模式,试图根据实际情况使用合适的方式创建对象.基本的对象创建方式可能会导致设计上的问题,或增 ...
- Xpath在选择器中正确,在代码中返回的是空列表问题
一.问题: 在进行爬虫的时候我们会用到xpath解析html文件,但是会有一种情况就是在xpath选择器中可以使用,但是在代码中就无法使用的情况. 二.原因: 1.是元素中有tbody的原因,这个元素 ...
- Linux 网卡Bond模式
网卡bond是通过把多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡. 有7种模式: mod 0/mod 1/mod 2/mod 3/mod 4/mod 5 mod=0 ,即:(ba ...
- easyui中的option设置selected没有效果
在mvc中,使用了easyUI框架,然后我点击添加新消息的时候弹窗一个新窗口,添加信息.却发现我的select一直无法设置默认状态,jq选中,还是直接在添加一条请选择的option都没办法选中,网络上 ...
- mysql8.0 linux 安装
1.下载 mysql-8.0.15-linux-glibc2.12-x86_64.tar.xz 2.解压 tar -xvf mysql-8.0.15-linux-glibc2.12-x86_64.ta ...
- VP-UML系统建模工具研究
一.基本信息 标题:VP-UML系统建模工具研究 时间:2014 出版源:软件工程师 领域分类:面向对象:CASE:UML:系统建模: 二.研究背景 问题定义:VP-UML系统建模的主要特点 难点:运 ...
- QQ网页弹窗
QQ网页弹窗 1.网址:http://shang.qq.com/v3/index.html 2.选推广工具,提示语随便写 3.建一个html 网页,并把代码拷进去. 4.双击网页,就可以打开了.(用E ...