当前位置: 首页 > news >正文

在家做网站北京网站推广价格

在家做网站,北京网站推广价格,外国优秀设计网站,阿里巴巴怎么做企业网站lombok的使用导入依赖一、getter、Setter、toString1、getter、Setter分别生成getxxx()和setxxx()方法2、toString生成toString()方法#xff0c;按顺序打印类名称以及每个字段#xff0c;并以逗号分隔二、NoArgsConstructor、RequiredArgsConstructor、AllArgsConstructor1、… lombok的使用导入依赖一、getter、Setter、toString1、getter、Setter分别生成getxxx()和setxxx()方法2、toString生成toString()方法按顺序打印类名称以及每个字段并以逗号分隔二、NoArgsConstructor、RequiredArgsConstructor、AllArgsConstructor1、NoArgsConstructor无参构造函数staticNameonConstructoraccessforce2、RequiredArgsConstructor3、AllArgsConstructor三、Data四、Builder、SingularBuilderSingular文章较长可以按需查阅导入依赖 首先Maven项目在pom.xml导入依赖 dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.24/version/dependency一、getter、Setter、toString 1、getter、Setter分别生成getxxx()和setxxx()方法 可以将注解加需要生成getter和setter方法的成员变量上。 如果加在了类上但是要某个成员变量生成特殊getter和setter怎么办 可以直接手动编写该变量的getter和sette方法当lombok检测到你已经为该变量编写了相应的getter和setter方法后就不会再自动生成了。 2、toString生成toString()方法按顺序打印类名称以及每个字段并以逗号分隔 二、NoArgsConstructor、RequiredArgsConstructor、AllArgsConstructor 1、NoArgsConstructor无参构造函数 NoArgsConstructor注解共有staticName、onConstructor、access以及force四个属性参数可以进行配置 staticName staticName代表的是是否生成静态构造方法也就是说当staticName属性有值时则会生成一个静态构造方法这时无参构造方法会被私有然后创建一个指定名称的静态构造方法并且是公有的如下所示 /*** 编译前代码*/ RequiredArgsConstructor(staticName UserStatic) public class UserInfo() {private String username;private String password; }/*** 编译后代码*/ public class UserInfo() {private String username;private String password;private UserInfo() {}public UserStatic() {return new UserStatic();} }onConstructor onConstructor 经常写Spring或者SpringBoot代码的人应该知道Spring对于依赖注入提供了三种写法分别是属性注入、Setter方法注入以及构造器注入但是在日常工作中我们更多采用的是依赖于Autowired注解方式进行依赖注入不过过多的依赖注入会使我们的代码过于冗长甚至Spring4.0起就已经开始不推荐这种写法了而是推荐使用Setter方法注入以及构造器注入lombok的生成构造器的方法就可以很方便的实现这种写法。 举一个通过构造器注入的例子 Controller public class SysLoginController() {private final TokenUtils tokenUtils;private final SysLoginService sysLoginService;/*** 在这里 Autowired 是可以省略的在这里使用只是为了介绍 onConstructor 参数*/Autowiredpublic SysLoginController (TokenUtils tokenUtils, SysLoginService sysLoginService) {this.tokenUtils tokenUtils;this.sysLoginService sysLoginService;} }这样注入Bean在数量较多时我们仍需编写大量代码这个时候就可以使用RequiredArgsConstructor注解来解决这个问题至于为什么不使用AllArgsConstructor注解是因为这个注解是针对所有参数的而在这个情境下我们只需构造Bean所对应的属性而不是非Bean所以我们只需在Bean对应的属性前加上final关键字进行修饰就可以只生成需要的有参构造函数如下所示 /*** 编译前*/ RequiredArgsConstructor(onConstructor __(Autowired)) public class SysLoginController() {private final TokenUtils tokenUtils;private final SysLoginService sysLoginService; }/*** 编译后*/ public class SysLoginController() {private final TokenUtils tokenUtils;private final SysLoginService sysLoginService;Autowiredpublic SysLoginController (TokenUtils tokenUtils, SysLoginService sysLoginService) {this.tokenUtils tokenUtils;this.sysLoginService sysLoginService;} }access 有的时候我们会使用单例模式这个时候需要我们创造一个私有的无参构造方法那么就可以使用access这样一个属性来设置构造起的权限如下所示 /*** 编译前代码*/ RequiredArgsConstructor(access AccessLevel.PRIVATE) public class UserInfo() {private String username;private String password; }/*** 编译后代码*/ public class UserInfo() {private String username;private String password;private UserInfo() {} }access的可选等级 public enum AccessLevel { PUBLIC, MODULE, PROTECTED, PACKAGE, PRIVATE, NONE; private AccessLevel() { }} force 当类中有被final关键字修饰的字段未被初始化时编译器会报错这时也可以设置force属性为true来为字段根据类型生成一个默认值0/false/null这样编译器就不会再报错了如下所示 /*** 编译前代码*/ RequiredArgsConstructor(force true) public class UserInfo() {private final String gender;private String username;private String password; }/*** 编译后代码*/ public class UserInfo() {private final String gender null;private String username;private String password;private UserInfo() {} }2、RequiredArgsConstructor RequiredArgsConstructor在类上使用这个注解可以生成带参或者不带参的构造方法。 若带参数只能是类中所有带有NonNull注解的和以final修饰的未经初始化的字段如下所示 /*** 编译前代码*/ RequiredArgsConstructor public class UserInfo() {private final String gender;NonNullprivate String username;private String password; }/*** 编译后代码*/ public class UserInfo() {private final String gender;NonNullprivate String username;private String password;public UserInfo(String gender, NonNull String username) {if (username null) {throws new NullPointerException(username is marked NonNull but is null);} else {this.gender gender;this.username username;}} }参数配置参照NoArgsConstructor源码详解 3、AllArgsConstructor AllArgsConstructor在类上使用这个注解可以生成全参构造函数且默认不生成无参构造函数。 不过需要注意的是这里所说的全参并不包括已经被初始化的被final关键字修饰的字段因为字段一旦被final关键字修饰被赋值后就不能再被修改如下所示 /*** 编译前代码*/ RequiredArgsConstructor public class UserInfo() {private final String gender;private final Integer age 18;private String username;private String password; }/*** 编译后代码*/ public class UserInfo() {private final String gender;private final Integer age 18;private String username;private String password;public User(String gender, String username, String password) {this.gender gender;this.username username;this.password password;} }参数配置参照NoArgsConstructor源码详解 三、Data Data注解包含了GetterSetter且有toString()equals()canEqual()等方法 四、Builder、Singular Builder 在lombok日常使用场景中总会碰到对象中包含集合的情况这种情况下我们对于对象中集合的赋值就需要像其他属性一样使用set方法进行赋值操作 Data Builder class Student{private String name;private ListString skills; }builder源码剖析 public static class StudentBuilder {// 省略其他部分public Student.StudentBuilder skills(ListString skills) {this.skills skills;return this;} }这种方式来初始化集合属性不能说是错的但是用起来还是不够人性化我们对集合进行构建时主要也是为其添加元素因此能不能有一个专门为该集合添加元素的方法同时将集合的实例化隐藏在代码内部的操作呢答案是肯定的这就是接下来介绍的Singular的作用. Singular /*** 编译前代码*/ Builder class Student{private String name;Singularprivate ListString skills; }/*** 编译后代码*/ class Student {private String name;private ListString skills;Student(String name, ListString skills) {this.name name;this.skills skills;}public static StudentBuilder builder() {return new StudentBuilder();}public static class StudentBuilder {private String name;private ArrayListString skills;StudentBuilder() {}public StudentBuilder name(String name) {this.name name;return this;}public StudentBuilder skill(String skill) {if (this.skills null) {this.skills new ArrayList();}this.skills.add(skill);return this;}public StudentBuilder skills(Collection? extends String skills) {if (skills null) {throw new NullPointerException(skills cannot be null);} else {if (this.skills null) {this.skills new ArrayList();}this.skills.addAll(skills);return this;}}public StudentBuilder clearSkills() {if (this.skills ! null) {this.skills.clear();}return this;}public Student build() {List skills;switch (this.skills null ? 0 : this.skills.size()) {case 0:skills Collections.emptyList();break;case 1:skills Collections.singletonList(this.skills.get(0));break;default:skills Collections.unmodifiableList(new ArrayList(this.skills));}return new Student(this.name, skills);}public String toString() {return Student.StudentBuilder(name this.name , skills this.skills );}} }对比与上一份代码加入了Singular注解后lombok为我们添加了一个为集合添加元素的方法skill()当我们不指定方法名时lombok会根据英文自动推导出方法名如skills - skill集合名称为skills那么它会将复数去掉后剩下的单词就是方法名称了。我们可以自定义方法名的名称Singular(“addSkill”)。如果使用了不规范的命名则一定要指定方法名。 如有错误还请多多指教 转载或者引用本文内容请注明来源及原作者橘足轻重
http://www.w-s-a.com/news/970722/

相关文章:

  • 关于服装店网站建设的策划方案seo关键词优化软件官网
  • 丰台高端网站建设土巴兔装修贵吗
  • 宽屏网站mysqli pdo wordpress
  • 2022年没封网站直接进入赣州网吧
  • 河南省建设厅证件证件查询网站硬件开发是什么意思
  • tp5做企业网站宿迁房产网租房信息
  • php高级网站开发wordpress不能添加文章
  • 小学校园网站建设付费阅读下载网站开发
  • 如何做招聘网站网站建设中 敬请期待
  • 雅安工程交易建设网站做vip电影网站
  • 网站建设方维网站标题title为什么不能频繁的改
  • 网站建设如何上传文件wordpress列表自定义数据表
  • 摄影课程自学网站科技项目的类型有
  • 未来最紧缺的十大专业长春seo顾问
  • 为什么点不开网站公关公司是做什么的
  • wordpress主要菜单如何对网站页面进行优化
  • 建设银行深分行圳招聘网站建立互联网公司网站
  • 湖南做旅游网站哪家最好html5手机网站免费模板
  • 云服务器上放多个网站wordpress ping大全
  • 以下属于网站的管理 更新 维护如何才能做好品牌网站建设
  • 国家工业和信息化部网站备案系统网站建设设计费用
  • 网站建设利弊宁波高端网站建设联系方式
  • 网站订票策划方案郑州代做网站
  • 免费的网站加速器注册公司邮箱
  • 千助网站建设网站整站程序
  • 自学建网站做网站优化访问网站出现目录
  • 济南网站建设是什么百度官网登录入口手机版
  • net快速建站西宁手机网站建设
  • 网站浏览器不兼容怎么办软件系统开发大概多少钱
  • 网站建设哪个公司最好shift wordpress