zoukankan      html  css  js  c++  java
  • Java 中的链式编程

    前言

    ​ 在写项目的时候,有一个实体类有好多个属性,new 出来之后需要不停的使用setXXX( )方法,效率低而且代码可读性差,查询了下发现可以实现实体类的链式编程。

    public class User {
        private Integer id;
        private String userName;
        private String password;
        private String nikeName;
        private String email;
        private String phoneNum;
    
        /**
        setter/getter方法省略
        */
    }
    
    • 测试类中的赋值操作
    User user = new User();
    user.setId(1);
    user.setEmail("xxxx");
    user.setUserName("test");
    user.setPassword("5454");
    user.setNikeName("swds");
    user.setPhoneNum("17575");
    

    一、 在setter方法中实现链式编程

    • 修改setter方法的返回值为实体类类型,添加return this; 语句
    public class User {
        private Integer id;
        private String userName;
        private String password;
        private String nikeName;
        private String email;
        private String phoneNum;
    
        public Integer getId() {
            return id;
        }
    
        public User setId(Integer id) {
            this.id = id;
            return this;
        }
    
        public String getUserName() {
            return userName;
        }
    
        public User setUserName(String userName) {
            this.userName = userName;
            return this;
        }
    
        public String getPassword() {
            return password;
        }
    
        public String getNikeName() {
            return nikeName;
        }
    
        public User setNikeName(String nikeName) {
            this.nikeName = nikeName;
            return this;
        }
    
        public String getEmail() {
            return email;
        }
    
        public User setEmail(String email) {
            this.email = email;
            return this;
        }
    
        public String getPhoneNum() {
            return phoneNum;
        }
    
        public User setPhoneNum(String phoneNum) {
            this.phoneNum = phoneNum;
            return this;
        }
    
        public User setPassword(String password) {
            this.password = password;
            return this;
        }
    }
    
    • 在测试类中实现了链式编程
    User user = new User();
    user.setId(1).setUserName("sdd").setPhoneNum("sdsd").setNikeName("dsdsd").setEmail("xxxxx").setPassword("122");
    

    二、 使用lombok实现链式编程

    • 使用lombok之前,必须确保你的IDEA或者Eclipse中安装了lombok插件
    • 在项目中导入lombok的依赖
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.12</version>
    </dependency>
    
    
    • 在实体类上添加@Accessors(chain = true) 注解即可开启链式编程
    @Accessors(chain = true)    // 开启链式编程
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class User {
        private Integer id;
        private String userName;
        private String password;
        private String nikeName;
        private String email;
        private String phoneNum;
        
    }
    
    
  • 相关阅读:
    内存泄漏 Memory Leaks 内存优化 MD
    Handler Thread 内部类引起内存泄露分析
    为什么不取消注册BroadcastReceiver会导致内存泄漏
    WebChromeClient 简介 API 案例
    WebViewClient 简介 API 案例
    java.net.URI 简介 文档 API
    android.net.Uri 简介 API
    RV 多样式 MultiType 聊天界面 消息类型 MD
    JS函数声明与定义,作用域,函数声明与表达式的区别
    CSS中table tr:nth-child(even)改变tr背景颜色: IE7,8无效
  • 原文地址:https://www.cnblogs.com/ButterflyStars/p/13211378.html
Copyright © 2011-2022 走看看