资讯专栏INFORMATION COLUMN

使代码更简洁(三) ----利用方法链为对象属性赋值

noONE / 823人阅读

摘要:博客搬移到这里有个自己的博客还蛮好玩的,有一个有很多属性的类在为它的属性赋值时,通常有两种方式,使用构造函数和使用方法。可是使用构造函数有时会忘了各个字段的顺序,直接使用方法,又比较麻烦。

博客搬移到这里:http://yemengying.com/
有个自己的博客还蛮好玩的,bazinga!

有一个有很多属性的类:

public class User {
    private int id;
    private String name;
    private int age;
    private int sex;
    private int cityId;
    private int buId;
    private int roleId;
    private String pinyinName;
    public String getPinyinName() {
        return pinyinName;
    }
    public void setPinyinName(String pinyinName) {
        this.pinyinName = pinyinName;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int getSex() {
        return sex;
    }
    public void setSex(int sex) {
        this.sex = sex;
    }
    public int getCityId() {
        return cityId;
    }
    public void setCityId(int cityId) {
        this.cityId = cityId;
    }
    public int getBuId() {
        return buId;
    }
    public void setBuId(int buId) {
        this.buId = buId;
    }
    public int getRoleId() {
        return roleId;
    }
    public void setRoleId(int roleId) {
        this.roleId = roleId;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public User(int id, String name, int age, int sex, int cityId, int buId,
            int roleId, String pinyinName) {
        super();
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.cityId = cityId;
        this.buId = buId;
        this.roleId = roleId;
        this.pinyinName = pinyinName;
    }
    
    
}

在为它的属性赋值时,通常有两种方式,使用构造函数和使用set方法。可是使用构造函数有时会忘了各个字段的顺序 ,直接使用set方法,又比较麻烦。所以同事提出可以使用方法链,类似于StringBuilder的append方法

String s = new StringBuilder().append("0").append(1)
  .append(" 2 ").append(3).toString();

让bean的每个属性的set方法都返回一个对象本身的引用,将User类的set方法改写成下面的样子:

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

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

    public User setAge(int age) {
        this.age = age;
        return this;
    }

    public User setSex(int sex) {
        this.sex = sex;
        return this;
    }

    public User setCityId(int cityId) {
        this.cityId = cityId;
        return this;
    }

    public User setBuId(int buId) {
        this.buId = buId;
        return this;
    }

    public User setRoleId(int roleId) {
        this.roleId = roleId;
        return this;
    }

    public User setPinyinName(String pinyinName) {
        this.pinyinName = pinyinName;
        return this;
    }

这样在对User的属性赋值时就简洁了许多。

User user = new User().setId(1).setAge(18)
                        .setBuId(127)
                        .setRoleId(12)
                        .setName("giraffe")
                        .setCityId(12)
                        .setSex(1)
                        .setPinyinName("gif");        

不过不知道这样写会不会有什么不好的地方~~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64602.html

相关文章

  • 对javascript中闭包的理解

    摘要:在前端开发中闭包是一个很重要的知识点,是面试中一定会被问到的内容。闭包的用途闭包可以用在许多地方。这里仅仅是我对闭包的一些见解,若有错误的地方,还望大家提出,一起交流共同进步参考文献你不知道的上卷深入理解系列 在前端开发中闭包是一个很重要的知识点,是面试中一定会被问到的内容。之前我对闭包的理解主要是通过闭包可以在函数外部能访问到函数内部的变量,对闭包运用的也很少,甚至自己写过闭包自己都...

    Enlightenment 评论0 收藏0
  • 方法和数组就是这么简单!

    摘要:数组就是一个简单的线性序列,这使得元素访问非常快速。堆区堆内存用来存放创建的对象和数组。堆内存中的实体不再被指向时,启动垃圾回收机制,自动清除,这也是优于的表现之一中需要程序员手动清除。 showImg(https://segmentfault.com/img/remote/1460000019264541?w=600&h=242); 第三章 方法和数组 3.1 概述 还记得我们的He...

    darkerXi 评论0 收藏0
  • 网站代码优化

    摘要:将面试整理的网站优化资料记一记,针对移动端的代码说的。而第三种里面在移动端里使用号比数组快很多,在端得看浏览器,不同浏览器不同版本对这两种方式的优化不同。尽量减少对的操作这个例子需要动态添加,动态删除,每个标签有事件。 将面试整理的网站优化资料记一记,针对移动端的代码说的。 html 1: 标签嵌套层级不要太深,标签尽量简洁化.如懒加载后将data属性去除 2: DNS预先处理 dns...

    xcold 评论0 收藏0
  • 网站代码优化

    摘要:将面试整理的网站优化资料记一记,针对移动端的代码说的。而第三种里面在移动端里使用号比数组快很多,在端得看浏览器,不同浏览器不同版本对这两种方式的优化不同。尽量减少对的操作这个例子需要动态添加,动态删除,每个标签有事件。 将面试整理的网站优化资料记一记,针对移动端的代码说的。 html 1: 标签嵌套层级不要太深,标签尽量简洁化.如懒加载后将data属性去除 2: DNS预先处理 dns...

    Forest10 评论0 收藏0
  • 网站代码优化

    摘要:将面试整理的网站优化资料记一记,针对移动端的代码说的。而第三种里面在移动端里使用号比数组快很多,在端得看浏览器,不同浏览器不同版本对这两种方式的优化不同。尽量减少对的操作这个例子需要动态添加,动态删除,每个标签有事件。 将面试整理的网站优化资料记一记,针对移动端的代码说的。 html 1: 标签嵌套层级不要太深,标签尽量简洁化.如懒加载后将data属性去除 2: DNS预先处理 dns...

    leoperfect 评论0 收藏0

发表评论

0条评论

noONE

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<