👨🎓作者:Java学术趴 🏦仓库:Github、Gitee ✏️博客:CSDN、掘金、InfoQ、云+社区 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。
☠️每日毒鸡汤:这个社会是存在不公平的,不要抱怨,因为没有用!人总是在反省中进步的!
👋大家好!我是你们的老朋友Java学术趴。
@Getter/@Setter : 注解在类上, 为类提供读写属性。
@ToString : 注解在类上, 为类提供 toString() 方法。
@EqualsAndHashCode : 注解在类上, 为类提供 equals() 和 hashCode() 方法。
在类是继承父类的情况下,EqualsAndHashCode实则就是在比较两个对象的属性;
@NoArgsConstructor :注解在实体类上, 为类提供无参构造方法。
@RequiredArgsConstructor :注解在实体类上,提供有指定参数的构造方法。
@AllArgsConstructor : 注解在实体类上,提供全参构造方法。
@NonNull : 注解在参数上, 如果获取到的这个参数为 null , 就会报出异常, throw new NullPointException(参数名)。 注意 :这个注解是注释在实体类的属性上,而不是实体类上。
@Data :@Data相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode这5个注解的合集。写这一个注解就不用写其中包含的这5个注解了。
注意:使用@Date会生成一无参构造方法,如果想在加一个有参构造方法,需要添加 @AllArgsConstructor 注解。
@Builder : 注解在实体类上, 为类提供一个内部的 Builder。
@Synchronized : 注解在方法上, 为方法提供同步锁。 注意:这个是注解在方法上,而不是类上。
@Log4j : 注解在各个层,提供一个属性名为 log 的 log4j 的日志对象。之后就可以在任何地方直接使用log.info()打印日志。
以前使用打印日志,必须先创建一个打印日志的Logger对象,调用Logger对象中的info()方法进行打印。
private final Logger logger = LoggerFactory.getLogger(当前类名.class);
logger.info("方法被触发了");
加入了@Log4j注解之后,直接使用 log.info() 方法打印日志信息
log.info("方法被触发了");
@Slf4j : 注解在各个层,提供一个属性名为 log 的 Slf4j 的日志对象。他的用法和上面的@Log4一样。
@Accessors : Accessor的中文含义是存取器。这个注解是针对实体类中的 getter与setter方法而言的。
包含的属性:
fluent属性:参数值为true/false
@Data
@Accessors(fluent = true)
public class Person {
private int id;
private String name;
// 生成的getter和setter方法如下,方法体略
// getter省略了get
public int id() {}
// setter省略了set,并且返回值是:Person对象
public Person id(int id) {}
public String name() {}
public Person name(String name) {}
}
chain属性:参数值为true/false
@Data
@Accessors(chain = true)
public class Person {
private int id;
private String name;
// 生成的setter方法如下,方法体略
public Person setId(int id) {}
public Person setName(String name) {}
}
这样写的好处:
prefix属性:参数为String类型
@Data
@Accessors(prefix = "zqr")
class Person {
private int zqrId;
private String zqrName;
// 生成的getter和setter方法如下,方法体略
public int getId() {}
public void setId(int id) {}
public String getName() {}
public void setName(String name) {}
}
相当于字符串截取功能,在生成getter和setter方法的时候,会自动截取去除指定前缀,然后加上get与set;
如上代码,生成的不是getZqrId(),而是getId()。遵守驼峰命名规则。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有