effective java 第2条:遇到多个构造器参数时要考虑用构造器
如果构建一个对象需要很多参数时,那么有三种方式可以实现。 第一种就是多重构造器
public class Person {private final int id; //requiredprivate final String name; //requiredprivate final int age; //optionalprivate final int gender; //optionalprivate final Date brithDay; //optionalpublic Person(int id, String name, int age, int gender, Date brithDay) {this.id = id;this.name = name;this.age = age;this.gender = gender;this.brithDay = brithDay;}public Person(int id, String name, int age, int gender){this(id, name, age, gender, null);}public Person(int id, String name, int age){this(id, name, age, 0);}public Person(int id, String name){this(id, name,0);}
}
复制代码
第二种JavaBean 通过setter设置参数 缺点:因为构造过程被分到了几个调用中,在构造过程中JavaBean可能处于不一致的状态。 第三种Builder构建器模式
public class Person {private final int id; //requiredprivate final String name; //requiredprivate final int age; //optionalprivate final int gender; //optionalprivate final Date birthday; //optionalpublic static class Builder implements com.zml.Builder<Person>{private int id; //requiredprivate String name; //requiredprivate int age = 0; //optionalprivate int gender = 0; //optionalprivate Date birthday = null; //optionalpublic Builder(int id,String name){this.id = id;this.name = name;}public Builder age(int age){this.age = age;return this;}public Builder gender(int gender){this.gender = gender;return this;}public Builder brithDay(Date brithDay){this.birthday = brithDay;return this;}@Overridepublic Person builder() {return new Person(this);}}public Person(Builder builder) {this.id = builder.id;this.name = builder.name;this.age = builder.age;this.gender = builder.gender;this.birthday = builder.birthday;}public static void main(String[] args) {Person person = new Person.Builder(1,"hello").builder();}
}
public interface Builder<T> {T builder();
}
复制代码
effective java 第2条:遇到多个构造器参数时要考虑用构造器相关推荐
- 【读书笔记】《Effective Java》第二章 第2条:遇到多个构造器参数时要考虑使用Builder
一.前言 <Effective Java>读书笔记系列 第二章 第1条:创建和销毁对象 第二章 第2条:遇到多个构造器参数时要考虑使用Builder 二.介绍 我们开发中偶尔会遇到一些需要 ...
- Effective.Java第23-33条(泛型相关)
23. 类结构层次优于标签类 有时你会碰到一个类,它的实例有一个或多个风格,并且包含一个tag属性表示实例的风格.例如,如下面的类表示一个圆或者矩形: public class Figure {/* ...
- Effective Java第七条:避免使用终结方法
第七条:避免使用终结方法 1, 终结方法(finalizer)会让程序不稳定,性能降低,出现可移植性的问题. 2, Finalizer在c++中师析构器(destructors)的一部分,用作回收 ...
- effective java第45条:将局部变量的作用域最小化
我以前写for循环的例子: public class Client {public static void main(String[] args) {Client client = new Clien ...
- java开发进度条怎么监控,上传文件时监控读取进度,显示进度条
我们在使用异步事件处理时还能顺便获得一项优势,那就是能够监控文件的读取进度:这对于读取大文件.查找错误和预测读取完成时间非常实用. onloadstart 和 onprogress 事件可用于监控读取 ...
- Effective Java 创建和销毁对象 2.遇到多个构造器参数时要考虑用构建器
静态工厂跟构造器都有一个共同的局限性:不能很好的扩展到大量的参数. 例: package com.example.yancy.yancy; /** * Created by yancy on 201 ...
- 第2条 遇到多个构造器参数时要考虑构建器
2019独角兽企业重金招聘Python工程师标准>>> 假如,对于这样的类,属性多达10多个,有以下几种处理方式. 处理方式1: 一般来说,我们大多采用重叠构造器模式,在这种模式下, ...
- java后台请求第三方接口,写入中文参数时失败“message“:“Invalid UTF-8 start byte 0x84\n at XXXXXXXXX
RT调用第三方接口时,参数有些要传入中文,在connection.setRequestProperty("Content-Type", "application/json ...
- Effective Java 在工作中的应用总结
简介: <Effective Java>是一本经典的 Java 学习宝典,值得每位 Java 开发者阅读.笔者将书中和平日工作较密切的知识点做了部分总结. 作者 | 宜秋 来源 | 阿里技 ...
最新文章
- 深度学习 -- TensorFlow(9)循环神经网络RNN
- 数学家的亿万商业王国:先后创建“验证码”和“多邻国”,20岁就被盖茨亲自挖去微软!...
- node.js 多异步之间的协作方案
- pytorch maxpool和卷积尺寸问题
- Windows 技术篇-win7利用系统自带工具关闭开机启用程序,不使用杀毒软件设置开机启动项
- c语言中赋予从2开始的偶数,2013年计算机二级C语言上机试题三十二及答案
- Android studio的sdk tools下没有LLDB的解决办法
- python实现文件上传功能_python实现文件上传功能
- Linux 动态库剖析
- linux设置最大打开文件数
- charles iPhone抓包步骤 Fiddler
- 【pytorch图像分类】ResNet网络结构
- 台式电脑添加共享计算机,台式电脑怎么设置wifi共享
- 怎么用大众都懂的语言解释黎曼空间?
- 解决java中使用getImage()导入图片失败问题
- 关于activity的生命周期1
- 《视觉SLAM十四讲》学习笔记:第5讲相机与图像
- android qq接口,手机QQ Scheme接口
- 关于斐讯K2路由器 j.s9w.cc 劫持的问题。
- mysql8.0.15mis百度网盘_mysql-installer-community-8.0.15.0数据库的安装
热门文章
- 细聊分布式ID生成方法-2
- ssh提示connection refused_2020高考语法填空必会技巧之有提示词(一)
- JavaScript 代码片段
- java list to byte_java – 将ArrayList转换为byte []
- vscode安装旧版本插件_2020 我在使用VScode时安装的插件(针对前端开花推荐)
- birt java api_「Birt」birt api生成报表 | 学步园
- java数据库打包_java程序需要连接数据库 如何打包
- qtreeview编辑节点文本_[我花2个月做了叙事短篇游戏]我是怎么做游戏编辑工具的...
- excel 显示超链接_临下班老板让我创建几百个超链接跳转,我就用了1秒,绝不加班...
- matlab保存f黑白图片_Matlab微积分