`
朱秋旭
  • 浏览: 230671 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

被Java世界忽视的Lombok

阅读更多

在祖国65岁生日之际,道一声生日快乐,也祝大家国庆节happy。当大家选择和拥塞的公路较劲的时候,我选择了宅在家里用自己微薄的文字为Java中一个很方便的工具Lombok平反。

 

忘记了什么时候看到Lombok这个东西,开始对它的感觉是读起来很霸气,有没有哈哈。

渐渐的发现,这个东西还真是TMD方便啊,可以在Java世界里面一直默默无闻不知道是什么原因。今天就给大家分享一下Lombok,让大家感受一下这厮到底有多方便,到底能让你的代码多精简。

 

先上一个叫做val 的东东, 我们定义一个常量是不是都会这样写:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class ValExample {
  public String example() {
    final ArrayList<String> example = new ArrayList<String>();
    example.add("Hello, World!");
    final String foo = example.get(0);
    return foo.toLowerCase();
  }
  
  public void example2() {
    final HashMap<Integer, String> map = new HashMap<Integer, String>();
    map.put(0, "zero");
    map.put(5, "five");
    for (final Map.Entry<Integer, String> entry : map.entrySet()) {
      System.out.printf("%d: %s\n", entry.getKey(), entry.getValue());
    }
  }
}

 但是, 自从有了Lombok, final + 类型 这种复杂的定义方式不再需要了。

 

import java.util.ArrayList;
import java.util.HashMap;
import lombok.val;

public class ValExample {
  public String example() {
    val example = new ArrayList<String>();
    example.add("Hello, World!");
    val foo = example.get(0);
    return foo.toLowerCase();
  }
  
  public void example2() {
    val map = new HashMap<Integer, String>();
    map.put(0, "zero");
    map.put(5, "five");
    for (val entry : map.entrySet()) {
      System.out.printf("%d: %s\n", entry.getKey(), entry.getValue());
    }
  }
}

 

 

再来一个annotation 让大家尝尝鲜,来个@NotNull,看到他的介绍果然惊艳,叫“爱上NPE”,让我们一起见证一下如何爱上NPE:

对比下面两端代码,你就会很明显的感觉到它的益处:

 

import lombok.NonNull;

public class NonNullExample extends Something {
  private String name;
  
  public NonNullExample(@NonNull Person person) {
    super("Hello");
    this.name = person.getName();
  }
}

 

 

import lombok.NonNull;

public class NonNullExample extends Something {
  private String name;
  
  public NonNullExample(Person person) {
    super("Hello");
    if (person == null) {
      throw new NullPointerException("person");
    }
    this.name = person.getName();
  }
}

 
 估计看过guava代码的亲们应该都看到过这种annotation的。其实NotNull包括了两种Exception,有一个可选的annotation参数,通过exceptionType,可以决定当前位置是用IllegalArgumentException还是NPE,当然默认值就是NPE了。在Lombok中有一个好处就是如果使用了如@Data这样的Lombok annotation,也会默认出发@NotNull 的, 同时如果把@NotNull加到了原始类型上,你将收获一个warning。

 

只有处理NPE的怎么够,接下来我们陆续学习更多的Lombok的好东西:

@Cleanup     

@Getter, @Setter

@ToString

@EqualsAndHashCode

@Constructor

@Data & @Value

@SneakyThrows

@Synchronized

@Getter(lazy=true)

@Log

 

如果想关注Lombok 更多内容可以去官方网页细细品味:http://www.projectlombok.org/

3
0
分享到:
评论

相关推荐

    java 平台性能战术与策略 Java Platform Performance Strategies and Tactics.rar

    在Java性能优化中,以下几个核心知识点不容忽视: 1. **垃圾回收(Garbage Collection)**:Java的自动内存管理机制,虽然简化了编程,但其工作方式可能导致性能瓶颈。理解不同GC算法如Serial、Parallel、CMS、G1和...

    Java项目之springboot在线小说阅读平台(源码)

    3. **软件/插件**: 项目可能包含了各种开发工具或插件,如IDEA (IntelliJ IDEA)、Maven或Gradle(构建工具),Eclipse(IDE),以及Lombok(简化对象属性生成)等,这些工具极大提高了开发效率。 4. **在线小说阅读...

    扒站java源码-blog_98:blog_98

    扒站java源码 最新消息,SpringBoot博客已经开源, 关于项目 该博客是基于SSM实现的一个个人博客系统,适合初学SSM和个人博客制作的同学学习。 主要涉及技术包括的包括 Maven、Spring、SpringMVC、MyBatis、Redis、...

    扒站java源码-pierblog:码头博客

    扒站java源码 最新消息,SpringBoot博客已经开源, 关于项目 该博客是基于SSM实现的一个个人博客系统,适合初学SSM和个人博客制作的同学学习。 主要涉及技术包括的包括 Maven、Spring、SpringMVC、MyBatis、Redis、...

    xdoclet-plugins-dist-1.0.4

    虽然XDoclet在当时非常流行,但随着Java的发展,它的一些功能已经被现代工具如Maven、Gradle和Lombok所取代。这些工具提供了更强大、更灵活的代码生成和管理方式。然而,对于了解历史和研究早期Java开发实践的人来说...

    扒站java源码-ForestBlog:博客

    扒站java源码 关于项目 该博客是基于SSM实现的一个个人博客系统,适合初学SSM和个人博客制作的同学学习。 主要涉及技术包括的包括 Maven、Spring、SpringMVC、MyBatis、Redis、JSP等。 前端采用Layui框架和扒了一个...

    Cryptozoology

    元编程则更进一步,它允许在编译时或运行时生成和修改代码,例如Lombok库简化了Java的getter和setter生成。 6. **低级别编程**:虽然Java是一种高级语言,但通过JNI(Java Native Interface)可以与C/C++等原生代码...

    扒站java源码-blog-lsyq:博客-lsyq

    扒站java源码 关于项目 该博客是基于SSM实现的一个个人博客系统,适合初学SSM和个人博客制作的同学学习。 主要涉及技术包括的包括 Maven、Spring、SpringMVC、MyBatis、Redis、JSP等。 前端采用Layui框架和扒了一个...

    微信小程序点餐系统开发常见问题汇总

    Lombok是一个Java库,可以通过注解的方式简化实体类、DTO(Data Transfer Object)、DAO(Data Access Object)等代码的编写。当开发者在集成开发环境(IDEA)中遇到lombok包不存在的错误时,通常是因为没有安装lombok库...

    idea-settings:我对Java的想法设置

    在IT行业中,集成开发...文件名为`idea-settings-master`可能是一个包含了上述所有配置的导出文件,可以被导入到其他IDEA实例,快速复用这些精心调整的设置。理解并运用这些设置,将使你在Java开发之旅更加得心应手。

    xdoclet-plugins-1.0.3.rar

    但它的设计理念——通过元数据自动化生成配置文件,对后来的框架和工具(如Lombok、Maven插件等)产生了深远的影响。 总结来说,XDoclet-plugins-1.0.3是XDoclet工具的一个重要版本,它包含了一系列针对不同框架的...

    扒站java源码-ForestBlog:森林博客

    扒站java源码 最新消息,SpringBoot博客已经开源, 关于项目 该博客是基于SSM实现的一个个人博客系统,适合初学SSM和个人博客制作的同学学习。 主要涉及技术包括的包括 Maven、Spring、SpringMVC、MyBatis、Redis、...

    扒站java源码-ForestBlog:自己修改过的开源博客SSM+layui

    扒站java源码 关于项目 该博客是基于SSM实现的一个个人博客系统,适合初学SSM和个人博客制作的同学学习。 主要涉及技术包括的包括 Maven、Spring、SpringMVC、MyBatis、Redis、JSP等。 前端采用Layui框架和扒了一个...

    IntelliJ_IDEA_设置 idea9

    1. **插件市场**:访问“File” -&gt; “Settings” -&gt; “Plugins”,浏览并安装增强IDEA功能的各种插件,如Lombok、Gitflow等。 2. **插件设置**:安装后,可在“Settings” -&gt; “Plugins”中配置插件参数,根据需要...

    intellij-plugins:IntelliJ IDEA Ultimate和其他基于IntelliJ Platform的IDE发行版中包含的开源插件

    5. **开发辅助插件**:例如Lombok插件,简化Java Bean的编码;Live Templates,自定义代码片段快速输入;以及Code Style配置插件,统一团队的编码规范。 6. **调试和测试插件**:如JUnit、TestNG插件,增强测试功能...

    eclipse转向idea使用教程

    Eclipse和IntelliJ IDEA是两个备受推崇的Java开发工具。虽然Eclipse拥有广泛的社区支持和丰富的插件库,但IntelliJ IDEA以其强大的智能代码提示、高效的项目管理和内置版本控制等功能,吸引了越来越多的开发者。本...

Global site tag (gtag.js) - Google Analytics