昨晚做测试的时候需要一个测试对象,于是创建了一个Person,如下:
public class Person implements Serializable{ private final int age; private final String name; private int weight; private String sex; ..... }
可见这个对象的域有多么的多,如果在构造函数中进行赋值,或者实例化后通过setter赋值,都是件十分麻烦的事,于是便想到了Effective Java中通过创建内部类Builder来构造实例:
public static class Builder { // 必须 private final int age; private final String name; // 非必须 private String sex = ""; private int weight = 0; public Builder (int age, String name){ this.age = age; this.name = name; } public Builder sex (String val){ sex = val; return this; } public Builder weight (int val){ weight = val; return this; } public Person build (){ return new Person(this); } }
这样一来就能很方便到选择需要的参数进行赋值了:
Person person = new Person.Builder(20, "张三").sex("男").weight(140).build();
很清晰吧,下面是完整代码:
public class Person implements Serializable{ private static final long serialVersionUID = 7037233268790765128L; private final int age; private final String name; private final String sex; private final int weight; private Person (Builder builder){ age = builder.age; name = builder.name; sex = builder.sex; weight = builder.weight; } public static class Builder { // 必须 private final int age; private final String name; // 非必须 private String sex = ""; private int weight = 0; public Builder (int age, String name){ this.age = age; this.name = name; } public Builder sex (String val){ sex = val; return this; } public Builder weight (int val){ weight = val; return this; } public Person build (){ return new Person(this); } } public int getAge() { return age; } public String getName() { return name; } public String getSex() { return sex; } public int getWeight() { return weight; } @Override public String toString() { return "Person [age=" + age + ", name=" + name + ", sex=" + sex + ", weight=" + weight + "]"; } }
相关推荐
【JavaBuilder魔方实例代码】是基于Matlab Builder for JA技术的一个应用示例,它展示了如何将Matlab程序集成到Java环境中,以便在Java应用程序中利用Matlab的强大计算能力和图像处理功能。Matlab Builder for JA是...
总的来说,"PowerBuilder 8.0实例教程源代码"是学习PowerBuilder 8.0的宝贵资源,通过深入研究这些源代码,不仅可以掌握工具的使用,还能提升编程思维和软件开发的整体能力。对于初学者和有经验的开发者来说,都是极...
在这个例子中,`Client`类创建了一个`SportsCarBuilder`实例,并通过`CarDirector`构建了一辆跑车。`SportsCarBuilder`负责填充`Car`对象的各个部分,而`CarDirector`则协调这个过程,确保所有部分都被正确地构建。 ...
通过《Java ME 移动开发实例精讲》提供的视频教程和源代码,你可以逐步学习并实践这些知识,从而掌握移动应用开发的全过程。郭克华的讲解应该会详细解析每个步骤,并给出实用的技巧和最佳实践。对于想要进入移动开发...
标题中的“PB调用JAVA WEBSERVICE实例”指的是使用PowerBuilder(PB)应用程序调用由Java编写的Web服务。在企业级应用开发中,不同语言之间的互操作性是非常重要的,而Web服务提供了一种标准的方式来实现这一点。让...
本篇文章将深入探讨如何在Java中利用HTTP协议发送XML报文,并通过实例和参数解析具体实现步骤。 首先,我们需要引入Java的HttpURLConnection类,这是Java标准库提供的HTTP客户端接口。发送XML报文通常涉及到POST或...
在本实例中,Flex Builder 3将被用于创建Flex前端界面,编写ActionScript代码,并与后端Java服务进行交互。 3. **BlazeDS**:BlazeDS是Adobe提供的一个开源项目,它作为一个数据和服务中间件,允许Flex应用与Java...
在"Java Builder 模式之贷款办理"这个主题中,我们可以深入理解如何利用Builder模式来创建复杂贷款申请流程的实例。 Builder模式通常由四个主要角色组成:Product(产品),Builder(建造者),ConcreteBuilder...
Builder模式中的Product类可能具有setter和getter方法,但不直接提供构造函数,而是通过Builder来创建实例。 4. **Director**(可选):这个类负责协调Builder,指导构建过程。它定义了一种构建顺序,并通过调用...
5. **运行代码**:在demo中,应该有一个主程序或者测试类,它创建一个Director实例,然后使用Builder来构建一个Product对象。这展示了Builder模式如何工作以及如何在实际项目中应用。 Builder模式的优势在于它可以...
总的来说,OkHttp的使用主要包括创建`OkHttpClient`实例,构建`Request`对象,然后选择同步或异步的方式发送请求。异步请求时,通过回调函数处理响应,确保在合适的线程中执行后续操作。OkHttp还支持POST、PUT、...
通过本《Java图形编程实例大全》,你将有机会实践上述概念,通过实际的项目加深理解。无论是初学者还是经验丰富的开发者,都可以从中受益,提升Java图形编程技能。学习过程中,建议结合每个示例,逐步理解并模仿代码...
以下是一些Java中常见的设计模式及其实例代码实现的详细讲解: 1. **单例模式(Singleton)**: 单例模式确保一个类只有一个实例,并提供一个全局访问点。防止多线程环境下多个实例的产生,常用于日志、配置管理等...
Flex是Adobe公司开发的一种富互联网应用程序(RIA)框架,它...通过这个Flex+Java登录实例,开发者可以学习到如何结合两种技术创建功能完善的Web应用,理解前后端交互的过程,以及在实际项目中应用这些技术的最佳实践。
2. **创建元素节点**:通过`Document`对象的`createElement()`方法创建XML元素。 3. **添加属性**:如果需要,可以使用`createAttribute()`方法为元素添加属性。 4. **添加子元素**:使用`appendChild()`或`...
实例009 安装WindowBuilder插件 12 实例010 开发计算器界面 14 第3章 Java语言基础 15 实例011 输出错误信息与调试信息 16 实例012 从控制台接收输入字符 16 实例013 重定向输出流实现程序日志 17 实例014 自动类型...
PowerBuilder是一款强大的客户端/服务器应用开发工具,而JMail则是一个Java库,用于在Java应用程序中发送电子邮件。在这个实例中,我们将关注如何在PowerBuilder 9(PB9)中整合这两个组件。 首先,我们需要理解...
本资源“java设计模式实例”旨在通过实际的代码示例帮助程序员深入理解并熟练应用设计模式。 1. **单例模式(Singleton)**:确保一个类只有一个实例,并提供全局访问点。在Java中,通常使用双重检查锁定(Double-...