Java实体类实现链式操作实例解析

 更新时间:2019年12月12日 09:18:02   作者:Davion2017  
这篇文章主要介绍了Java实体类实现链式操作实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了Java实体类实现链式操作实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

原来是这么写bean的,单纯的使用get、set方法,再加一个toString

package Model;

/**
 * @author: Davion
 * @date: 2019/12/11
 * @description:
 */
public class User {
  private Integer id;
  private String name;

  @Override
  public String toString() {
    return "User{" +
        "id=" + id +
        ", name='" + name + '\'' +
        '}';
  }

  public Integer getId() {
    return id;
  }

  public void setId(Integer id) {
    this.id = id;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }
}

然后使用的使用就是不断的set

import Model.User;

/**
 * @author: Davion
 * @date: 2019/12/11
 * @description:
 */
public class Main {
  public static void main(String[] args) {
    User user = new User();
    user.setId(1);
    user.setName("Davion");
    System.out.println(user);
  }
}

再简单点就是使用Lombok自动生产get/set方法,当然今天说的不是Lombok的优点,虽然是真的好用

但是今天突然看到一些新的操作:链式bean,具体如下,

修改User类如下:

package Model;

/**
 * @author: Davion
 * @date: 2019/12/11
 * @description:
 */
public class User {
  private Integer id;
  private String name;

  @Override
  public String toString() {
    return "User{" +
        "id=" + id +
        ", name='" + name + '\'' +
        '}';
  }

  public Integer getId() {
    return id;
  }

  public User setId(Integer id) {
    this.id = id;
    return this;
  }

  public String getName() {
    return name;
  }

  public User setName(String name) {
    this.name = name;
    return this;
  }
}

可以看到,和原来的区别就是修改了set方法,原来是没有返回值,直接是设置某个属性,但现在的返回类型是模型本省,返回值是this,

重点来了,接着客户端使用的时候是这样的:

import Model.User;

/**
 * @author: Davion
 * @date: 2019/12/11
 * @description:
 */
public class Main {
  public static void main(String[] args) {
    User user = new User();
    user.setId(1).setName("Davion");
    System.out.println(user);
  }
}

因为返回对象是this,所以可以接着使用当前模型的所有方法

这样的链式操作能节省很多时间,而且也直观简洁了很多,而且对原来的写法也没有任何影响

因为平时都是使用Lombok的,所以不会自己写get/set方法,那链式操作又怎么使用Lombok实现呢,

众所周知,Lombok是使用注解的方式,让代码更简洁,同理,那么要Lombok实现链式bean,应该也是使用相应的注解

这个注解就是 @Accessors(chain = true),意思是访问器允许链式操作, 那么现在代码就是:

package Model;

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

/**
 * @author: Davion
 * @date: 2019/12/11
 * @description:
 */
@Accessors(chain = true)
@Data
public class User {
  private Integer id;
  private String name;
}

客户端代码不需要变,这样就实现了一个链式bean

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java中jvm逃逸问题分析

    java中jvm逃逸问题分析

    本篇文章给大家详细总结了java中jvm逃逸问题的相关内容,有兴趣的朋友可以根据小编一起学习下。
    2018-02-02
  • SpringBoot使用Nacos配置中心的实现

    SpringBoot使用Nacos配置中心的实现

    这篇文章主要介绍了SpringBoot使用Nacos配置中心的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • SpringBoot2整合JTA组件实现多数据源事务管理

    SpringBoot2整合JTA组件实现多数据源事务管理

    这篇文章主要介绍了SpringBoot2整合JTA组件实现多数据源事务管理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 详解Maven 搭建spring boot多模块项目(附源码)

    详解Maven 搭建spring boot多模块项目(附源码)

    这篇文章主要介绍了详解Maven 搭建spring boot多模块项目(附源码),具有一定的参考价值,有兴趣的可以了解一下
    2017-09-09
  • java实现的统计字符算法示例

    java实现的统计字符算法示例

    这篇文章主要介绍了java实现的统计字符算法,涉及java针对字符的遍历、判断、运算等相关操作技巧,需要的朋友可以参考下
    2017-10-10
  • Java编程实现判断网上邻居文件是否存在的方法

    Java编程实现判断网上邻居文件是否存在的方法

    这篇文章主要介绍了Java编程实现判断网上邻居文件是否存在的方法,涉及Java针对路径转换及字符串操作的相关技巧,需要的朋友可以参考下
    2015-10-10
  • 详解JavaFX桌面应用开发-Group(容器组)

    详解JavaFX桌面应用开发-Group(容器组)

    这篇文章主要介绍了JavaFX桌面应用开发-Group(容器组),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Java实现跳转到指定页面的方法小结

    Java实现跳转到指定页面的方法小结

    在Java中,实现页面跳转主要涉及到Web开发,而这通常通过使用Java的Web框架(如Servlet、Spring MVC)来完成,下面讲解一下如何在不同的Java Web框架中实现页面跳转,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2024-05-05
  • java实现Img与PDF相互转换

    java实现Img与PDF相互转换

    这篇文章主要为大家详细介绍了java实现Img与PDF相互转换的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Java设计模式七大原则之开闭原则详解

    Java设计模式七大原则之开闭原则详解

    开闭原则,又称为OCP原则,即一个软件实体如类,模块和函数应该对扩展开放,对修改关闭。本文将详细介绍Java设计模式七大原则之一的开闭原则,需要的可以参考一下
    2022-02-02

最新评论