ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

lombok链式编程

2021-09-08 14:33:19  阅读:206  来源: 互联网

标签:name age 编程 StudentBean private 链式 lombok public String


lombok链式编程

lombok能通过注解的方式,在编译时自动为属性生成构造器,getter/setter、equals、hashcode、toString方法。

1.添加依赖

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.16.14</version>
	<scope>provided</scope>
</dependency>

2.lombok实现静态的链式编程

把bean改成lombok添加**@Accessors(chain = true)**注解即可

package com.change.entity;

import lombok.Data;
import lombok.experimental.Accessors;

@Accessors(chain = true)
@Data
public class UserDemo {
    private Long id;
    private String username;
    private String password;
}

链式编程的使用

package com.change;

import com.change.entity.UserDemo;

public class demo {

    public static void main(String[] args) {
        UserDemo userDemo=new UserDemo();
        userDemo.setId(1L).setUsername("aa").setPassword("abc");
    }
}

3静态链式编程

静态链接编程创建对象更简洁,可以在静态方法,静态代码块等中使用,对于必输字段,也可以强制要求

3.1Lombok实现静态的链式编程

比如,创建Student对象是没有会要求一些必输字段,比如name字段必须有值,如果自己写

public class StudentBean {
 
	private String name;  
	private int age;
	
	
	private StudentBean(String name) {   //默认构造方法置为 private
	  	this.name = name;
	}
	
	public static StudentBean getInstance(String name) {  //唯一的 public 构造方法,name 不能为空
	 	if (name == null)
	    	throw new NullPointerException("name is not null"); 
	  	return new StudentBean(name);
	}  
	
	//------------  getter/setter  --------------
	public StudentBean setName(String name) { 
	  	this.name = name;
	  	return this;   // 返回this
	}
	
	public StudentBean setAge(int age) {
	 	this.age = age;
	  	return this;   // 返回this
	}  
	
	public String getName() {
	  	return this.name;
	} 
	
	public int getAge() {
	  	return this.age;
	}  
	
	public String toString() {
	  	return "StudentBean(name=" + getName() + ", age=" + getAge() + ")";
	}
}

使用lombok注解,实现静态的链式编程

@Accessors(chain = true)
@Data
@RequiredArgsConstructor(staticName = "getInstance")   //指定构造方法 
public class StudentBean {

	@NonNull
	private String name;
	
	private int age;
}

在使用的时候

package com.change;

import java.math.BigDecimal;

public class demo2 {
    public static void main(String[] args) {
        StudentBean studentBean = StudentBean.getInstance("lisi").setAge(20);
    }
}

@RequiredArgsConstructor原理

import lombok.NonNull;

public class StudentBean {

	  @NonNull
	  private String name;  
	  private int age;
	  
	   // 默认构造方法置为 private
	  private StudentBean(@NonNull String name) { 
		    if (name == null)
		      	throw new NullPointerException("name"); 
		    this.name = name;
	  }
	  
	   //唯一的 public 构造方法,name 不能为空
	  public static StudentBean getInstance(@NonNull String name) { 
	    	return new StudentBean(name);
	  }
	  	

	  //------------  getter/setter  --------------
	   public StudentBean setName(@NonNull String name) {
		   if (name == null)
		      throw new NullPointerException("name"); 
		   this.name = name;
		   return this;         // 返回this
	  }  
	  
	  public StudentBean setAge(int age) {
		  this.age = age;
		  return this;         // 返回this
	  }
	  
	  @NonNull
	  public String getName() {
	   	 return this.name;
	  }
	  
	  public int getAge() {
	  	  return this.age;
	  }

	 public String toString() {
	    return "StudentBean(name=" + getName() + ", age=" + getAge() + ")";
	 }

  	 // -- 省略 equals,canEqual ,hashCode--- 	
}

标签:name,age,编程,StudentBean,private,链式,lombok,public,String
来源: https://blog.csdn.net/chaochao2113/article/details/120179328

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有