java构造对象的方式
2018-01-03 11:39
106 查看
开发项目中,创建对象时,总是实例化对象,采用对象.set**的方法,当碰到对象的字段很多时,写的代码重复性高,所以总结了创建对象的几种方式,个人偏爱第一种
一种:构造器模式
例子(共3步):
1.构造一个Person对象,里面的字段name名字(必传参数),学号(必传参数),年龄(选传参数),班级(选 传参数)。
2.构建一个Builder内部类,Person类的必传参数作为Builder内部类有参构造函数的参数,其余Person类的 选传参数,在Builder内部类中单独构造。
3.构建Person类的有参构造函数(参数为内部类Builer)。
代码如下:
客户端代码如下:
此时输出为:
Person [name=笨笨, classId=201405060321, age=8, grade=物联网]
此时可能会有疑问,我要获取对象的字段怎么办?
当然在Person类中实现get,set方法,因为构造器,只是提供一种构造对象的方法,减少set**字段时的代码量。
第二种方式:
在Person类中对每个字段实现get,set方法,之后在实例化对象时,单独字段采用set**的方法。
第三种方式:
在Person类中的构造函数中使用有参构造。
一种:构造器模式
例子(共3步):
1.构造一个Person对象,里面的字段name名字(必传参数),学号(必传参数),年龄(选传参数),班级(选 传参数)。
2.构建一个Builder内部类,Person类的必传参数作为Builder内部类有参构造函数的参数,其余Person类的 选传参数,在Builder内部类中单独构造。
3.构建Person类的有参构造函数(参数为内部类Builer)。
代码如下:
/** * @Description: model类里面采用Builder 构造器 构造对象 * @author:Dxh * @date:2018年1月2日 */ public class Person { /** * 用户名 必传参数 */ private String name; /** * 学号 必传参数 */ private Long classId; /** * 年龄 选传参数 */ private Integer age; /** * 班级 选传参数 */ private String grade; //内部类用于构建对象 public static class Builder{ private String name; private Long classId; private Integer age; private String grade; public Builder(String name, Long classId){ this.name = name; this.classId = classId; } public Builder age(Integer ageVal){ age = ageVal; return this; } public Builder grade(String gradeVal){ grade = gradeVal; return this; } public Person build(){ return new Person(this); } } //构造方法构造必传参数 public Person(Builder builder){ name = builder.name; classId = builder.classId; age = builder.age; grade = builder.grade; } @Override public String toString() { return "Person [name=" + name + ", classId=" + classId + ", age=" + age + ", grade=" + grade + "]"; } }
客户端代码如下:
/** * @Description: 客户端使用构造器 构造对象 * @author:Dxh * @date:2018年1月3日 */ public class Client { public static void main(String[] args) { Person person = new Person.Builder("笨笨", 201405060321L).age(8).grade("物联网1班").build(); System.out.println(person.toString()); } }
此时输出为:
Person [name=笨笨, classId=201405060321, age=8, grade=物联网]
此时可能会有疑问,我要获取对象的字段怎么办?
当然在Person类中实现get,set方法,因为构造器,只是提供一种构造对象的方法,减少set**字段时的代码量。
第二种方式:
在Person类中对每个字段实现get,set方法,之后在实例化对象时,单独字段采用set**的方法。
第三种方式:
在Person类中的构造函数中使用有参构造。
相关文章推荐
- 2018/01/08JAVA 基础 / 接口与继承/Java关键词:变量引用 super 调用父类对象方法/构造方法【或者访问父类对象属性】的方式归纳
- java对象的创建方式
- Java中创建对象的5种方式
- Java中创建对象的5种方式
- java基础入门-对象与构造方法
- Java中创建对象的5种方式
- java中创建对象的5种方式
- Java中两种String对象创建和初始化方式比较
- Java中创建对象的5种方式
- java创建对象的方式有几种
- Java学习----对象的构造
- JAXB xml转java对象/java转xml,JAXB xml对象构造
- Java中创建对象的5种方式
- 黑马程序员:Java之介绍对象、封装、构造函数、构造代码块及this关键字
- java从零单排(七) 对象构造
- JAVA反射(一)获取Class对象的三种方式及其区别
- Jedis存储Java对象--Java序列化为byte数组方式
- Java知识点整理:第五章:类的声明,构造方法,方法,继承中的构造器,对象实例化过程
- Java对象的强、软、弱和虚引用原理+结合ReferenceQueue对象构造Java对象的高速缓存器
- Java中创建对象的5种方式