这些注解都属于lombok包。
看别人的代码用到@Data注解,以前没见过,今天查了一下它的作用:
注解在类上, 为类提供读写属性, 此外还提供了 equals()、hashCode()、toString() 方法。
@Data的使用方法
1.引入依赖:要使用 @Data 注解要先引入lombok,lombok 是什么,它是一个工具类库,可以用简单的注解形式来简化代码,提高开发效率。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
2.直接在相应的实体类上加上@Data注解即可;
@Data
public class User {
private int id;
private String name;
private int age ;
private byte[] photo;
private List<User> list ;
}
添加注解后可以看到类中自动加入了get(),set(),以及toString()方法等。
以下为其他常用的注解:
@EqualsAndHashCode:生成Equals方法和HashCode方法, 但@Data注解包括@Getter、 @Setter、@RequiredArgsConstructor、 @ToString、@EqualsAndHashCode
注:@Data注解在派生子类上时默认@EqualsAndHashCode(callSuper = false),即重写子类的equals和hashcode不包含父类
@AllArgsConstructor : 注在类上,提供类的全参构造
@NoArgsConstructor : 注在类上,提供类的无参构造
@Accessors:
(1)该注解主要作用是:当属性字段在生成 getter 和 setter 方法时,做一些相关的设置。
(2)当它可作用于类上时,修饰类中所有字段,当作用于具体字段时,只对该字段有效。
该字段共有三个属性,分别是 fluent,chain,prefix
fluent:默认为false, 若设置为ture,对应字段的 getter 方法前面就没有 get,setter 方法就不会有 set。例如:
chain:默认为false,当该值为 true 时,对应字段的setter方法调用后,会返回当前对象。
pre 该属性是一个字符串数组,当该数组有值时,表示忽略字段中对应的前缀,生成对应的 getter 和 setter 方法。
比如现在有 xxName 字段和 yyAge 字段,xx 和 yy 分别是 name 字段和 age 字段的前缀。
那么,我们在生成的 getter 和 setter 方法如下,它也是带有 xx 和 yy 前缀的。