Java常用开发工具

简介: IDE推荐Intelij IDEA,有社区版本的,可以免费使用。同时还与很多语法和编译器的支持,比如Markdown、VM、Bash、Thrift、Protobuf。lombokreference: https://projectlombok.org/index.html开发环境插件安装 集成开发环境中,需要安装对应的开发插件, 插件安装参照对应的

IDE

推荐Intelij IDEA,有社区版本的,可以免费使用。同时还与很多语法和编译器的支持,比如Markdown、VM、Bash、Thrift、Protobuf。

lombok

reference:
https://projectlombok.org/index.html

开发环境

  • 插件安装
    集成开发环境中,需要安装对应的开发插件, 插件安装参照对应的集成开发环境中插件的安装方法,搜索lombok,安装。
  • maven库
//如果使用了@Log相关的注解,需要添加对应的库
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.12</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.4</version>
</dependency>
  • 启用注解处理
    这里写图片描述

注解说明

val
      Finally! Hassle-free final local variables.
      会自动解析变量的返回类型,并且返回的变量列行是final类型。final String foo = example.get(0); var foo = example.get(0);

@NonNull
      How I learned to stop worrying and love the NullPointerException.
      常用于函数参数的设置,相比Java自带的注解,不需要写任何的check代码。

 public NonNullExample(@NonNull Person person) {     
     this.name = person.getName();
}

//相当于
public NonNullExample(@NonNull Person person) {   
    if (person == null) {
       throw new NullPointerException("person");
    }
    this.name = person.getName();
}

@Cleanup
      Automatic resource management: Call your close() methods safely with no hassle.

@Cleanup InputStream in = new FileInputStream(args[0]);
//当in变量超出作用域后,会调用对应的close方法。如果没有close方法,也可以指定对应的处理方法, @Cleanup("method name")

@Getter / @Setter
      Never write public int getFoo() {return foo;} again.

@ToString
      No need to start a debugger to see your fields: Just let lombok generate a toString for you!

@ToString(callSuper=true, includeFieldNames=true)

@EqualsAndHashCode
      Equality made easy: Generates hashCode and equals implementations from the fields of your object.

@EqualsAndHashCode
@EqualsAndHashCode(exclude={"id", "shape"}) //不对id,shape属性进行比较

@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
      Constructors made to order: Generates constructors that take no arguments, one argument per final / non-null field, or one argument for every field.

@Data
      All together now: A shortcut for @ToString, @EqualsAndHashCode, @Getter on all fields, and @Setter on all non-final fields, and @RequiredArgsConstructor!

@Value
      Immutable classes made very easy.

@Builder
      The @Builder annotation produces complex builder APIs for your classes. 可以在程序中使用 Person.builder().name(“Adam Savage”).build();这样的类似的方法来构建对应的实体。

 @Builder
 public class BuilderExample {
   private String name;
   private int age;
   @Singular private Set<String> occupations;
 }

集合类型中需要@Singular注解,lombok中支持的类型包括:

java.util:
    Iterable, Collection, and List (backed by a compacted unmodifiable ArrayList in the general case).
    Set, SortedSet, and NavigableSet (backed by a smartly sized unmodifiable HashSet or TreeSet in the general case).
    Map, SortedMap, and NavigableMap (backed by a smartly sized unmodifiable HashMap or TreeMap in the general case).

Guava's com.google.common.collect:
    ImmutableCollection and ImmutableList (backed by the builder feature of ImmutableList).
    ImmutableSet and ImmutableSortedSet (backed by the builder feature of those types).
    ImmutableMap, ImmutableBiMap, and ImmutableSortedMap (backed by the builder feature of those types).

@SneakyThrows
To boldly throw checked exceptions where no one has thrown them before!

@Synchronized

@Getter(lazy=true)
      Laziness is a virtue!使用了getter这个annotation可以在实际使用到cached的时候生成cached,同时,Lombok会自动去管理线程安全的问题,不会存在重复赋值的问题。

@Getter(lazy=true) private final double[] cached = expensive();

 private double[] expensive() {
     double[] result = new double[1000000];
     for (int i = 0; i < result.length; i++) {
       result[i] = Math.asin(i);
    }
     return result;
 }

@Log
Captain’s Log, stardate 24435.7: “What was that line again?”

Configuration system
Lombok, made to order: Configure lombok features in one place for your entire project or even your workspace.

J2SE中注解

目录
相关文章
|
20天前
|
监控 JavaScript 前端开发
《理解 WebSocket:Java Web 开发的实时通信技术》
【4月更文挑战第4天】WebSocket是Java Web实时通信的关键技术,提供双向持久连接,实现低延迟、高效率的实时交互。适用于聊天应用、在线游戏、数据监控和即时通知。开发涉及服务器端实现、客户端连接及数据协议定义,注意安全、错误处理、性能和兼容性。随着实时应用需求增加,WebSocket在Java Web开发中的地位将更加重要。
|
1月前
JavaWeb 开发之 ServletContext 的和使用
JavaWeb 开发之 ServletContext 的和使用
23 1
|
5天前
|
Java Maven 开发工具
《Java 简易速速上手小册》第5章:Java 开发工具和框架(2024 最新版)
《Java 简易速速上手小册》第5章:Java 开发工具和框架(2024 最新版)
26 1
|
5天前
|
IDE Java 数据库连接
使用 Java 进行桌面应用开发
【4月更文挑战第19天】Java 是一款广泛应用于企业级、网络和桌面应用开发的编程语言。其跨平台特性使Java程序能在不同操作系统上运行,而JDK提供了开发所需工具和库。使用Swing等GUI库构建用户界面,结合JDBC进行数据库操作,Socket实现网络通信。虽然面临性能和用户体验的挑战,但通过优化和选用合适的IDE,Java仍能开发出高效稳定的桌面应用。
|
5天前
|
前端开发 Java Go
开发语言详解(python、java、Go(Golong)。。。。)
开发语言详解(python、java、Go(Golong)。。。。)
|
6天前
|
人工智能 前端开发 Java
Java语言开发的AI智慧导诊系统源码springboot+redis 3D互联网智导诊系统源码
智慧导诊解决盲目就诊问题,减轻分诊工作压力。降低挂错号比例,优化就诊流程,有效提高线上线下医疗机构接诊效率。可通过人体画像选择症状部位,了解对应病症信息和推荐就医科室。
49 10
|
6天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
13天前
|
运维 NoSQL 算法
Java开发-深入理解Redis Cluster的工作原理
综上所述,Redis Cluster通过数据分片、节点发现、主从复制、数据迁移、故障检测和客户端路由等机制,实现了一个分布式的、高可用的Redis解决方案。它允许数据分布在多个节点上,提供了自动故障转移和读写分离的功能,适用于需要大规模、高性能、高可用性的应用场景。
16 0
|
15天前
|
人工智能 小程序 Java
JAVA开发智慧学校系统源码+人脸电子班牌布局
智慧校园是通过利用物联网,大数据技术来改变师生和校园资源相互交互的方式,以便提高交互的明确性、灵活性和响应速度,从而实现智慧化服务和管理的校园模式。
|
18天前
|
安全 前端开发 Java
Java Web开发知识点学习总结
Java Web开发涉及Java基础、Servlet、JSP、数据库操作(SQL+JDBC)、MVC设计模式、Spring框架、Hibernate ORM、Web服务(SOAP&RESTful)、安全认证(HTTP Basic/Digest/OAuth)及性能优化(缓存、异步、负载均衡)。
17 3