Lombok(1.14.8)的简单示例
来源:互联网 发布:超级淘宝系统下载 编辑:程序博客网 时间:2024/05/22 08:23
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)的简单示例
- Lombok(1.14.8)的简单示例
- lombok的简单介绍(1)
- lombok的简单介绍(2)
- lombok的简单粗暴的作用
- lombok的简单介绍及使用
- lombok简单使用
- lombok 简单入门
- Lombok 简单说明
- 发现神奇的lombok
- 可爱的Lombok
- lombok的使用
- Lombok 的使用
- lombok造成的StackOverflowError
- lombok的使用
- lombok插件的使用
- lombok的使用
- Lombok的安装、使用说明
- 深入浅出TensorFlow(六)TensorFlow高层封装
- 多条目加载
- SQL三表连接查询
- 实例以及详解localStorage进行本地存储
- 程序:计算1!+2!+3!+4!+.....+n!
- Lombok(1.14.8)的简单示例
- 浏览器文本显示自动替换单词间空格数量大于一的空格,替换为一个空格
- Java实现对称解密小程序用户信息(AES-128-CBC算法)
- destoon标签调用技巧
- jfreechart在linux下中文不显示或乱码的问题
- HDU 5867 Water problem 【】
- SCIM System for Cross-domain Identity Management (SCIM)
- Free DIY Tour HDU
- unable to open debugger port:java.net.SocketException以及直接运行报80端口被system占用