zoukankan      html  css  js  c++  java
  • 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方法:

    [java] view plain copy
     
    1. package com.huey.dream.beans;  
    2.   
    3. import java.util.Date;  
    4.   
    5. import lombok.Getter;  
    6. import lombok.Setter;  
    7.   
    8. public class Student {  
    9.   
    10.     @Getter @Setter  
    11.     private int studNo;  
    12.     @Getter @Setter  
    13.     private String studName;  
    14.     @Getter @Setter  
    15.     private Date birthday;  
    16.   
    17.       
    18.     public static void main(String[] args) {  
    19.         Student stud = new Student();  
    20.         stud.setStudName("huey");  
    21.         System.out.println(stud.getStudName());  
    22.     }  
    23. }  

    结果输出:

    [plain] view plain copy
     
    1. huey  

    2. @EqualsAndHashCode,实现了equals()和hashCode()方法:

    [java] view plain copy
     
    1. package com.huey.dream.beans;  
    2.   
    3. import java.util.Date;  
    4.   
    5. import lombok.EqualsAndHashCode;  
    6. import lombok.Getter;  
    7. import lombok.Setter;  
    8.   
    9. @EqualsAndHashCode  
    10. public class Student {  
    11.   
    12.     @Getter @Setter  
    13.     private int studNo;  
    14.     @Getter @Setter  
    15.     private String studName;  
    16.     @Getter @Setter  
    17.     private Date birthday;  
    18.       
    19.     public static void main(String[] args) {  
    20.         Date today = new Date();  
    21.           
    22.         Student stud1 = new Student();  
    23.         stud1.setStudNo(10001);  
    24.         stud1.setStudName("huey");  
    25.         stud1.setBirthday(today);  
    26.           
    27.         Student stud2 = new Student();  
    28.         stud2.setStudNo(10001);  
    29.         stud2.setStudName("huey");  
    30.         stud2.setBirthday(today);  
    31.           
    32.         System.out.println(stud1.hashCode());  
    33.         System.out.println(stud2.hashCode());  
    34.         System.out.println(stud1.equals(stud2));  
    35.     }  
    36. }  

    结果输出:

    [plain] view plain copy
     
    1. -1678491668  
    2. -1678491668  
    3. true  

    3. @ToString,实现了toString()方法:

    [java] view plain copy
     
    1. package com.huey.dream.beans;  
    2.   
    3. import java.util.Date;  
    4.   
    5. import lombok.Getter;  
    6. import lombok.Setter;  
    7. import lombok.ToString;  
    8.   
    9. @ToString  
    10. public class Student {  
    11.   
    12.     @Getter @Setter  
    13.     private int studNo;  
    14.     @Getter @Setter  
    15.     private String studName;  
    16.     @Getter @Setter  
    17.     private Date birthday;  
    18.   
    19.       
    20.     public static void main(String[] args) {  
    21.         Date today = new Date();  
    22.           
    23.         Student stud = new Student();  
    24.         stud.setStudNo(10001);  
    25.         stud.setStudName("huey");  
    26.         stud.setBirthday(today);  
    27.           
    28.         System.out.println(stud);  
    29.     }  
    30. }  

    结果输出:

    [plain] view plain copy
     
    1. Student(studNo=10001, studName=huey, birthday=Mon Dec 29 21:04:17 CST 2014)  

    4. @Data, 相当上述三个annotation:

    [java] view plain copy
     
    1. package com.huey.dream.beans;  
    2.   
    3. import java.util.Date;  
    4.   
    5. import lombok.Data;  
    6.   
    7. @Data  
    8. public class Student {  
    9.   
    10.     private int studNo;  
    11.     private String studName;  
    12.     private Date birthday;  
    13.   
    14.       
    15.     public static void main(String[] args) {  
    16.         Date today = new Date();  
    17.           
    18.         Student stud1 = new Student();  
    19.         stud1.setStudNo(10001);  
    20.         stud1.setStudName("huey");  
    21.         stud1.setBirthday(today);  
    22.           
    23.         Student stud2 = new Student();  
    24.         stud2.setStudNo(10001);  
    25.         stud2.setStudName("huey");  
    26.         stud2.setBirthday(today);  
    27.           
    28.         System.out.println(stud1.hashCode() - stud2.hashCode());  
    29.         System.out.println(stud1.equals(stud2));  
    30.         System.out.println(stud1);  
    31.     }  
    32. }  

    结果输出:

    [plain] view plain copy
     
    1. 0  
    2. true  
    3. Student(studNo=10001, studName=huey, birthday=Mon Dec 29 21:05:32 CST 2014)  



    5. @NoArgsConstructor,提供一个无参的构造方法:

    [java] view plain copy
     
    1. package com.huey.dream.beans;  
    2.   
    3. import java.util.Date;  
    4.   
    5. import lombok.Data;  
    6. import lombok.NoArgsConstructor;  
    7.   
    8. @NoArgsConstructor  
    9. @Data  
    10. public class Student {  
    11.   
    12.     private int studNo;  
    13.     private String studName;  
    14.     private Date birthday;  
    15.       
    16.     public Student(int studNo, String studName, Date birthday) {  
    17.         super();  
    18.         this.studNo = studNo;  
    19.         this.studName = studName;  
    20.         this.birthday = birthday;  
    21.     }  
    22.       
    23.     public static void main(String[] args) {  
    24.         Date today = new Date();          
    25.         Student stud = new Student();  
    26.         stud.setStudNo(10001);  
    27.         stud.setStudName("huey");  
    28.         stud.setBirthday(today);  
    29.         System.out.println(stud);  
    30.     }  
    31. }  

    结果输出:

    [plain] view plain copy
     
    1. Student(studNo=10001, studName=huey, birthday=Mon Dec 29 21:15:00 CST 2014)  

    6. @AllArgsConstructor,提供一个全参的构造方法:

    [java] view plain copy
     
    1. package com.huey.dream.beans;  
    2.   
    3. import java.util.Date;  
    4.   
    5. import lombok.AllArgsConstructor;  
    6. import lombok.Data;  
    7.   
    8. @AllArgsConstructor  
    9. @Data  
    10. public class Student {  
    11.   
    12.     private int studNo;  
    13.     private String studName;  
    14.     private Date birthday;  
    15.   
    16.       
    17.     public static void main(String[] args) {  
    18.         Date today = new Date();          
    19.         Student stud = new Student(10001, "huey", today);  
    20.         System.out.println(stud);  
    21.     }  
    22. }  

    结果输出:

    [plain] view plain copy
     
    1. Student(studNo=10001, studName=huey, birthday=Mon Dec 29 21:10:37 CST 2014)  

    7.  @Synchronized,实现同步

    [java] view plain copy
     
    1. package com.huey.dream.foo;  
    2.   
    3. import java.util.Date;  
    4.   
    5. import lombok.Synchronized;  
    6.   
    7. public class Foo implements Runnable {  
    8.       
    9.     @Override  
    10.     public void run() {  
    11.         sayHello();  
    12.     }  
    13.   
    14.     @Synchronized  
    15.     public void sayHello() {  
    16.         System.out.println("hello, " + Thread.currentThread().getName() +"! Now is " + new Date());  
    17.         try {  
    18.             Thread.sleep(3000);  
    19.         } catch (InterruptedException e) {  
    20.             e.printStackTrace();  
    21.         }  
    22.     }  
    23.       
    24.     public static void main(String[] args) {  
    25.         Foo foo = new Foo();  
    26.         new Thread(foo).start();  
    27.         new Thread(foo).start();  
    28.     }  
    29. }  

    结果输出:

    [java] view plain copy
     
    1. hello, Thread-0! Now is Mon Dec 29 21:38:26 CST 2014  
    2. hello, Thread-1! Now is Mon Dec 29 21:38:29 CST 2014  


    8. @SneakyThrows,抛出异常

    [java] view plain copy
     
    1. package com.huey.dream.foo;  
    2.   
    3. import java.util.Date;  
    4.   
    5. import lombok.SneakyThrows;  
    6.   
    7. public class Foo {  
    8.   
    9.   
    10.     @SneakyThrows  
    11.     public void sayHello() {  
    12.         System.out.println("hello, " + Thread.currentThread().getName() +"! Now is " + new Date());  
    13.         Thread.sleep(3000);  
    14.     }  
    15.       
    16.     public static void main(String[] args) {  
    17.         new Foo().sayHello();  
    18.     }  
    19. }  


    9. @Cleanup,关闭流,如果最后清理资源的方法不是close(),可以指定,@Cleanup("clean"):

    [java] view plain copy
     
    1. package com.huey.dream.foo;  
    2.   
    3. import java.io.BufferedReader;  
    4. import java.io.File;  
    5. import java.io.FileReader;  
    6. import java.io.IOException;  
    7.   
    8. import lombok.Cleanup;  
    9.   
    10. public class Foo {  
    11.       
    12.     public void bar(String path) throws IOException {  
    13.         File file = new File(path);  
    14.         @Cleanup  
    15.         FileReader fr = new FileReader(file);  
    16.         BufferedReader br = new BufferedReader(fr);  
    17.         // ...  
    18.     }  
    19. }  

    10. @NonNull,生成一个非空检查:

    [java] view plain copy
     
    1. package com.huey.dream.foo;  
    2.   
    3. import java.io.BufferedReader;  
    4. import java.io.File;  
    5. import java.io.FileReader;  
    6. import java.io.IOException;  
    7.   
    8. import lombok.Cleanup;  
    9. import lombok.NonNull;  
    10.   
    11. public class Foo {  
    12.       
    13.     public void bar(@NonNull String path) throws IOException {  
    14.         File file = new File(path);  
    15.         @Cleanup  
    16.         FileReader fr = new FileReader(file);  
    17.         BufferedReader br = new BufferedReader(fr);  
    18.         // ...  
    19.     }  
    20. }  

    11. @Logs,生成一个日志对象:

    [java] view plain copy
     
    1. package com.huey.dream.foo;  
    2.   
    3. import lombok.extern.java.Log;  
    4.   
    5. @Log  
    6. public class Foo {  
    7.       
    8.     public static void main(String[] args) {  
    9.         log.info("This is an info message.");  
    10.     }  
    11. }  

    除了,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);

  • 相关阅读:
    AlterDialog 经常使用的样式
    C++编程->pair(对组)
    arcgis server10.2.2公布地图基础服务的详细步骤
    solr实战-(一)
    iOS开发-自己定义重用机制给ScrollerView加入子视图
    Day2下午解题报告
    Day2二分图笔记
    考前冲刺班成绩
    Day2平衡树笔记
    Day2上午解题报告
  • 原文地址:https://www.cnblogs.com/bingosblog/p/5846104.html
Copyright © 2011-2022 走看看