首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

JavaBuilder模式的设计实现

建议在阅读这篇文章之前,请先移步到java开发人员需要掌握的链式编程这里了解一下关于链式编程是如何实现的,为什么会我会写链式编程呢。...import java.util.Date; public class BuilderTest { public static void main(String[] args) {...Coder",1); System.out.println("user = " + user); 是不是比上面一步一步赋值看的简洁了许多,或许是,或许不是,在这里你有没有思考过这样一个问题,一般创建一个的时候成员属性不仅仅只有三五个...builder) { this.id = builder.id; this.name = builder.name; this.sex...在Worker里面定义一个静态内部类Builder,在静态内部类里面使用链式编程的方式为对应的属性进行赋值java开发人员需要掌握的链式编程创建我们需要的Worker对象,最后输出我们创建的worker

56320

Java中lombok @Builder注解使用详解

注解来实现 改造上面的如下: import lombok.Builder; import lombok.ToString; /** * @author wulongtao */ @ToString...过程中,发现了一问题:子类的Builder对象没有父的属性。...对于这个问题,找到了如下解法 对于父,使用@AllArgsConstructor注解 对于子类,手动编写全参数构造器,内部调用父全参数构造器,在子类全参数构造器上使用@Builder注解 通过这种方式...,子类Builder对象可以使用父的所有私有属性。...自定义静态内部类作为建造者,赋予默认值,再使用@Builder注解,这个时候lombok会补全已有的建造者,进而使用默认值 更新的lombok有@Builder.Default声明,注解在需要默认值的字段上即可

14.7K40

java(4)-深入理解java嵌套、内部类以及内部类builder构建构造函数六、使用 builder 模式解决构造方法参数过多的情况

一、什么是嵌套及内部类   可以在一个的内部定义另一个,这种类称为嵌套(nested classes),它有两种类型:静态嵌套和非静态嵌套。...,不能访问外部类的非静态成员,这是由Java语法中"静态方法不能直接访问非静态成员"所限定。...它是 Builder模式 的一种形式。客户端不直接调用所需的对象,而是调用构造方法 (或静态工厂),并使用所有必需的参数,并获得一个 builder 对象。...Builder 通常是它所构建的的一个静态成员。...builder 的 setter 方法返回 builder 本身,这样调用就可以被链接起来,从而生成一个流畅的 API。

1.4K10

Effective Java中构建器Builder的理解

在Effective Java中, 有对构建器的讲解, 看了 javaBuilder构建器的理解 之后, 了解了Builder不光只注重了代码优雅, 还注重了对象状态一致性, 以及对后续线程安全的考虑...构建器(Effective Java推荐) @Builder public class User { private String id; private String name;...的set方法返回this实现Builder 缺点: 代码优雅, 但是不能保证状态一致性, 不方便实现线程安全 public class User { private String id;...中Builder构建器的理解 所以说Builder构建器的真正意义并不是代码优美 Effective Java中写到:遗憾的是,javaBeans模式自身有着很严重的缺点。...与此相关的另一点不足在于,JavaBeans模式阻止了把做成不可变得可能,这就需要程序员付出额外的努力来确保它的线程安全。

67040

Java设计模式(四)Builder建造者模式

;而建造者模式下,各子类拥有其建造者,通过它创建不同的父对象,最终实现多态,实际上子类、父在代码中是不存在的。...通过工厂(无论是静态工厂还是抽象工厂),创建子类对象,这些对象拥有不同的表现方式,即为多态。...建造者模式下,Director好比导演一般,它来调用建造者Builder完成对对象的创建,调用者调用Director即可,如下图所示: ?...扩展时,例如新增Word文件数据采集,创建其Builder即可,该类实现Word文件数据采集程序的创建工作;调用时使用WordBuilder即可调用。...builder.buildFilePath(); builder.buildEquipmentData(); EquipmentDataCapture capture =

1.1K70

Effective.Java 读书笔记(2)使用Builder

build方法来生成对象,这样生成的对象是immutable(不可变的),builder在它所build的中是一个静态的成员 这里给出书中的例子 public class NutritionFacts...sodium = builder.sodium; carbohydrate = builder.carbohydrate; } } 从例子中我们可以看出,这一模式就是利用Builder来初始化参数,设置参数...extends Node> nodeBuilder) { ... } 传统的抽象工厂在Java上的实现曾经是一个的对象,有着newInstance方法,这个方法起到了build方法的作用。...Class.newInstance 破坏了编译阶段exception的检查,使用Builder接口就可以解决这些缺陷 当然Builder模式也是有缺点的,创建一个的时候你必须先创建builder,你必须确定一下创建一个...builder模式作为编写的开始。

34520

使用lombok的@Builder的注解:Error:java: 无法将中的构造器应用到给定类型

背景 今天写项目用lombok的@Builder注解,突然就报错咯。 ?...Error:(14, 1) java: 无法将 xxx 中的构造器 xxx 应用到给定类型; 需要: 没有参数 找到: java.lang.Integer,java.lang.String,java.lang.String...,java.lang.String,java.util.Date 原因: 实际参数列表和形式参数列表长度不同 解决方案 builder默认用的是全参数构造函数?...它的实现方式是会对标注这个注解的的所有成员变量,所以在使用@Builder构建的时候如果不显式的对某变量赋值的话默认就是null,因为这个变量此时是Builder里的,通过调用build()方法生成具体...T则是通过私有构造函数来实例化,默认是全参数的构造函数。

3.1K30

Java —— 包装(Wrapper

参考链接: Java包装器Wrapper 【概述】  由于 Java 中的八种基本数据类型不面向对象,为了使用方便,为每个基本数据类型设计了一个对应的,这样八种基本数据类型对应的统称为包装(Wrapper...Class),均位于 java.lang 包中。 ...:  作为基本数据类型对应的类型存在,方便涉及到对象的操作包含每种基本数据类型的相关属性(最大值、最小值等)以及相关的操作方法 【Number 】  抽象 Number 是 BigDecimal、...  Integer 、Long 、Short 、Byte 都是对整数进行操作,包含的方法基本相同,区别只是表示的范围不同,以下以 Integer 介绍整数包装。 ...  Double 、Float 都是对小数进行操作,包含的方法基本相同,区别只是表示的范围不同,以下以 Double 介绍小数包装

2.5K10

java日期(二)TimeZone,Calender

目录 TimeZone(时区) TimeZone对象 getDefault() 获取本地的时区对象 getAvailableIDs() 获取全世界的时区id getAvailableIDs(int...rawOffset) 根据偏移量获取时区id getTimeZone(String ID) getDisplayName() getID() 获取到当前的时区id Calender 概念 calender...对象里面有什么 从源码里面学习这个Calender setTime() get() add(int field, int amount) TimeZone(时区) 每一个地区都有时区id ,就是国际上面认定的时区...getDisplayName() 也就是展示 时区 名称 getID() 获取到当前的时区id Calender 概念 calender对象里面有什么 这个对象里面的东西如下: java.util.GregorianCalendar...setTime() 我们前端传过来的时间是字符串类型,我们要对这个时间进行操作,那么就可以转为Calender 这个对象,进行操作,因为这个里面的方法是很多的,可以对时间进行各种各样的操作。

1.4K30

初识JAVAJava库之StringBuffer(重点)

在讲解StringBuffer之前首先来简单回顾一下String的特点: · String的对象有两种实例化方式,一种是直接赋值,只会开辟一块堆内存空间,而且对象可以自动入池,另外一种方式使用构造方法完成...,但是其不适合于被频繁修改的字符串操作上,所以在这种情况下,往往可以使用StringBuffer,即:StringBuffer方便用户进行内容的修改。...在String之中使用“+”作为数据库的连接操作,而在StringBuffer之中使用append()方法进行数据的连接。...现在表示字符串的操作就有了两个:String、StringBuffer,那么下面通过这两个的定义来研究一下关系: 现在发现String和StringBuffer都实现了一个CharSequence...,同样,在StringBuffer之中也定义了许多的操作方法,而且有些方法还是String所有没有的支持。

72210

Java 包装

目录 概述 创建对象 直接使用字面值 使用构造方法 使用静态方法valueOf 常用方法 自动装箱与自动拆箱 概述 自动装箱 自动拆箱 原理 概述 ​  Java为每一个基本数据类型提供了对应的一个包装...包装是一个,这样Java就可以在包装中提供常用的方法等供我们使用。  ...java并不是纯面向对象的语言,java语言是一个面向对象的语言,但是java中的基本数据类型却不是面向对象的,但是我们在实际使用中经常将基本数据类型转换成对象,便于操作,比如,集合的操作中,这时,我们就需要将基本类型数据转化成对象...基本数据类型和对应包装的对应关系为: 基本数据类型 包装 byte Byte boolean Boolean short Short char Character int Integer long...主要是让基本数据和对应的包装进行自动的转换,方便我们的使用。 自动装箱 ​ 自动装箱就是基本数据类型可以自动转换为对应的包装

56030

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券