今天小编给大家分享一下Java中Lombok常用注解有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
依次点击:FIle-Settings-Plugins,从插件栏中搜索Lombok进行安装,安装之后勾选Lombok启动即可。
放在类上,为该类的所有属性自动生成Getter和Setter方法
import lombok.Getter;
import lombok.Setter;
/**
* @program: our-task
* @description: 学生类
* @author: water76016
* @create: 2020-12-15 10:57
**/
@Getter
@Setter
public class Student {
int id;
String name;
int age;
}
自动重写toString方法,和我们平时使用IDEA编辑器自动生成的一样
/**
* @program: our-task
* @description: 学生类
* @author: water76016
* @create: 2020-12-15 10:57
**/
@ToString
public class Student {
int id;
String name;
int age;
}
自动生成equal(Object other)和hashCode()方法,如果某些变量不想要加入该注解,可以使用exclude进行排除
import lombok.EqualsAndHashCode;
@EqualsAndHashCode
public class Student {
int id;
String name;
int age;
}
import lombok.EqualsAndHashCode;
//把name属性排除在外
@EqualsAndHashCode(exclude = "name")
public class Student {
int id;
String name;
int age;
}
问:为什么把生成equal(Object other)和hashCode()方法弄成一个注解,而不是分开使用?
答:在Java中有规定:当两个对象相等时,它们的hashcode是一定相等的。但是,当两个对象的hashcode相同,对象不一定相等。这样做是为了防止违反Java规定的情况发生。
生成一个不包含任何参数的无参构造器
import lombok.NoArgsConstructor;
@NoArgsConstructor
public class Student {
int id;
String name;
int age;
}
生成一个包含所有参数的构造器
import lombok.AllArgsConstructor;
@AllArgsConstructor
public class Student {
int id;
String name;
int age;
}
为“特定参数”生成构造器,这里的“特定参数”,特指那些加上final修饰词的属性
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class Student {
int id;
final String name;
int age;
public static void main(String[] args) {
Student student = new Student("33");
}
}
这里我们只为name加上final修饰,可以发现,我们只生成了一个包含name属性的构造器。另外,如果所有的属性都没有final修饰的话,使用@RequiredArgsConstructor会生成一个无参的构造器。
这是一个组合注解,加了这个注解,相当于加入了@Getter、@Setter、@ToString、@EqualsAndHashCode和@RequiredArgsConstructor这五个注解。
这也是一个组合注解,但是会把所有的变量都设置为final的,其他的就和@Data一样了。等同于加入了@Getter、@ToString、@EqualsAndHashCode和@RequiredArgsConstructor这四个注解(由于所有属性是final的,所以没有@setter注解了)。
流式的set值写法,不过毕竟是给属性赋值,基本的setter还是需要有的,一般来说,@Builder会和@Data一起使用。
import lombok.Builder;
import lombok.Data;
@Builder
@Data
public class Student {
int id;
String name;
int age;
public static void main(String[] args) {
Student student = Student.builder().id(1).name("water").age(18).build();
}
}
自动生成该类的log静态常量,就可以直接打印日志了,不用去new一个log的静态常量了。
@Slf4j
public class Student {
int id;
String name;
int age;
public static void main(String[] args) {
log.info("hello world");
}
}
以上就是“Java中Lombok常用注解有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://juejin.cn/post/7224145268738949179