注解@Builder和@Accessors---简化get/set方法

使用前的准备

@Builder和@Accessors都是lombok下的注解,都可以用于简化get/set方法。
要使用Lombok,需要添加插件并导入依赖。插件直接在IDEA的settings-Plugins中搜索lombok,下载后重启IDEA即可,依赖如下:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.10</version>
</dependency>

@Builder注解

@Builder 注解可以更方便的在对象初始化的时候对属性进行赋值,不用大量的调用 setter 方法,代码更易于阅读与编写。

@Data
@Builder
@NoArgsConstructor
public class User {
     
    String name;
    String address;
   public static void main(String[] args) {
     
        //builder方式赋值。取值仍然要通过get。
        User user=new User().builder().name("teacher").address("河南省").build();
        //set方式赋值
        user.setName("student");
        user.setAddress("北京市");
    }
}

@Accessors注解

@Accessors 有3个值:flunt,chain,prefix;

  1. fluent ,Boolean类型,默认false,且flunt为true,则chain默认为true。
    如果为true,name的getter就是 name(),setter方法就是name(T newValue)。
  2. chain ,Boolean类型,默认false,且flunt为true,则chain默认为true。
    如果为true,产生的setter返回的this即对象实例本身而不是void,因此可以直接再使用set方法或者调用其他函数。
  3. prefix ,一系列string类型。如果显示,属性必须加上某些定义的前缀。前缀被提取出来后才是属性名。字符都是字母,紧接着前缀后的字符一定不能是小写字母。例如,pepper对前缀p不是相等匹配,而跟pEpper是匹配的(也就意味着属性的基本名字是epper)。

注意:@Accessors注解可以在类和属性上使用。如果@Accessors注解在一个属性上,再对那个属性的类的@Accessors注解就会被忽略。

@Data
@Accessors(fluent = true)    
@NoArgsConstructor
public class User {
     
    String name;
    String Address;

    public static void main(String[] args) {
     
        //accesstor flunt=true,此时默认chain=true
        User user=new User().name("teacher").Address("河北"); //赋值,类似set方法
        String address=user.Address();                       //取值,类似get方法
    }
}
@Data
@Accessors(chain = true)
@NoArgsConstructor
public class User {
     
    String name;
    String Address;

    public static void main(String[] args) {
     
        //accesstor  chain=true,未设置flunt,默认flunt=false
        User user=new User().setName("teacher").setAddress("河北"); //赋值,类似set方法
        String address=user.getAddress();                       //取值,类似get方法
    }
}

你可能感兴趣的:(java,java)