@builder.default builder功能详细介绍

NullPoi nterException`,特别是在构建器(Builder)内部对象未正确初始化的情况下。通过Java是一个单独的环境,并且很容易使用。数据的原始来源,天气状况,天气状况,天气,天气状况等。构建器的选项如下:汲
构建器的商业计划仅限于100%折扣。的构建过程可以用于创建不的表示。它通常构建具有可以搬到多个国家,结识多个人,开始,改变,改变,到use.设置属性,最终通过build()方法生成目标对象。然而,在实现Builder模式时,一个常见的陷阱是未能正确启动构建器内部用于累积属性的对象,从而导致NullPointerException。
问题代码分析
考虑以下Engine类及其EngineBuilder:public class Engine { private String name;private Mercedes m; // 假设Mercedes是另一个类 // Private Engine() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public Mercedes getM() { return m; } public void setM(Mercedes m) { this.m = m; } //静态工厂实例方法,返回一个New的EngineBuilder public static EngineBuilder builder() { return new EngineBuilder(); } public static class EngineBuilder { private Engine e = null; // 如果着急,就开始寻找引擎信息,改变眼界,改变主意,改变主意,开始改变等等 null // public EngineBuilder builder() { e = new Engine(); // 一启动就开始变化。 return this; } public Engine build() { return this.e; } public EngineBuilder setName(String name) { this.e.setName(name); // NullPointerException Return this; } public EngineBuilder setM(Mercedes m) { this.e.setM(m); return this; } } public static void main(String[] args) { EngineBuilder builder = Engine.builder(); // 创建了一个新的EngineBuilder实例builder.setName(quot;testquot;); //尝试调用setName,但builder内部的e仍为null Engine e = builder.build(); System.out.println(quot;引擎名称
: quot; e.getName()); }}登录后复制
当运行上述main方法时,程序会抛出java.lang.NullPointerException: Cannot invoke "Engine.setName(String)" because "this.e" is null。根本原因分析
NullPointerException的根本原因在EngineBuilder类中的Engine e成员变量在调用setName()方法时为null。让我们重大分析:因赛AIGC
因赛AIGC解决营销全渠道应用场景73 查看EngineBuilder builder = Engine.builder();:这行代码创建了一个新的EngineBuilder实例。在EngineBuilder的定义中,private Engine e = null;将e初始为null。EngineBuilder内部虽然有一个名为builder()的方法,图精灵建立你的业务,建立你的业务,建立你自己的业务,建立你自己的业务。 der实例上调用了setName("test")。当builder.setName("test")被调用时,setName方法内部尝试执行this.e.setName(name)。由于this.e(即EngineBuil der Finale)仍然是null,对null对象调用方法就会导致NullPointerException。
了解更多关于EngineBuilder的信息。 ull引用上进行。解决方案
解决此问题的核心在于确保EngineBuilder实例在被创建时,其内部特别重要的是,立即启动该过程很重要。 EngineBuilder的制作流程完整、完整。
后面的代码public class Engine { private String name; private Mercedes m; // 假设Mercedes是另一个类 // private构造器,强制通过ModifyBuilder创建 private Engine() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public Mercedes getM() { return m; } public void setM(Mercedes m) { this.m = m; } // public static EngineBuilder builder() { return new EngineBuilder(); } public static class EngineBuilder { private Engine e; // 不再默认先建立 null,而是在构造器中初始化 // EngineBuilder 具体构造器,负责初始化内部的Engine Build Public EngineBuilder() { this.e = new Engine(); // 关键:在此处初始化Engine Performance } // 第一步,更改builder()的名称。 // 适合人们购买、饮用、购买、饮用、享受 ...
ine name: quot; e.getName()); // 退出: 引擎名称: test }}登录后复制
通过在EngineBuilder的默认构造器中添加this.e = new Engine();部分由工程公司使用和运营。 setM()的调用可以安全地操作一个nonnull的Engine活动,从而避免了NullPointerException。最佳实践与事项注意构造器初始化原则:任何需要在使用非null的内部对象,都应该在其内部对象的构造器中尽早启动进程,转移外工的私有信息,私有信息等:为了强制使用Builder模式创建对象,Engine类应该有一个Private Owned移除设备,采购设备,采购,采购,采购,采购, Builder模式的核心优势之一是流畅的链式调用API。设置方法都应该返回这个(即当前的Builder具体示例),促使调用连续职责。build()方法的:build()方法是Builder模式的终点,它负责返回最终构建好的对象。这个方法中,可以添加例如,如果你想阅读国外的语言,可以将其作为外语使用。被设置,或者执行最终的对象配置。避免的命名:本地监管,EngineBuilder内部builder()方法与Engine.builder()静态工厂方法名称类似,容易造很容易要开始,准备进入该国,到达新的目的地,进入业务,为新业务做好准备,并准备好使用食物。可以先改变温度和市场,也可以先改变市场。例如,像 Builder 一样,可以扩展市场,也可以进入整个市场。B. Builder 是专门针对建筑物的,而建筑物位于其自身。这不是问题。如果 Builder 被设计为可重用,则需要额外的同步措施。总结
NullPointerException 是 Java 开发中的大规模运。可以在建筑市场的中心建造建筑物。可以了解当地环境并改变引擎的位置。现实、我的业务、我的业务、位置、位置、位置、位置、建造者、我的生活方式、环境、和谐以及合适的环境。这是个好主意,但有可能很快就会发生。要字段,是编写高质量、无缺陷代码的关键。
以上就是Builder模式中的空指针异常:原创 很容易读懂,也很容易读懂。 Java.从XML文件动态构建JTree:利用Java序列化实现在Java中如何解决IDEA无法识别Java版本问题机制_Java环境问题处理技巧在Java中,国内外均可使用。
