Effective in java 中推荐一种叫构建器的方法, 其实质就是在类中创建一个静态内部类来完成对元素值的注入,effective in java 中推荐当参数多于四个的时候使用此方式, 下面上代码。
public class NutritionsFacts {
private int servingSize;
private int servings;
private int calories;
private int fat;
private int sodium;
private int carbohydrate;
public static class Builder {
private int servingSzie;
private int servings;
private int calories = 0;
private int fat = 0;
private int carbohydrate = 0;
private int sodium = 0;
public Builder(int servingSize, int servings) {
this.servingSzie = servingSize;
this.servings = servings;
}
public Builder calories(int val) {
calories = val;
return this;
}
public Builder fat(int val) {
fat = val;
return this;
}
public Builder carbohydrate(int val) {
carbohydrate = val;
return this;
}
public Builder sodium(int val) {
sodium = val;
return this;
}
public NutritionsFacts build() {
return new NutritionsFacts(this);
}
}
public NutritionsFacts(Builder builder) {
servingSize = builder.servingSzie;
servings = builder.servings;
calories = builder.calories;
fat = builder.fat;
sodium = builder.sodium;
carbohydrate = builder.carbohydrate;
}
public static void main(String[] args) {
NutritionsFacts cocaCola = new NutritionsFacts.Builder(240, 8)
.calories(100).sodium(35).carbohydrate(27).build();
System.out.println(cocaCola.toString());
}
@Override
public String toString() {
return "[" + servingSize + " , " + servings + ", " + calories + ", "
+ fat + ", " + sodium + ", " + carbohydrate + "]";
}
}
我自己写了一种方式,我觉得和上面的没有什么区别,而 effective in java 上说,这种方式很容易产生潜在的错误, 因为要设置的参数太多了, 所以会出现漏掉,造成空指针异常神马的, 哎, 不管了。看个人爱好了。上码:
public class MyNutritionsFacts {
private int servingSize;
private int servings;
private int calories;
private int fat;
private int sodium;
private int carbohydrate;
public int getServingSize() {
return servingSize;
}
public MyNutritionsFacts setServingSize(int servingSize) {
this.servingSize = servingSize;
return this;
}
public int getServings() {
return servings;
}
public MyNutritionsFacts setServings(int servings) {
this.servings = servings;
return this;
}
public int getCalories() {
return calories;
}
public MyNutritionsFacts setCalories(int calories) {
this.calories = calories;
return this;
}
public int getFat() {
return fat;
}
public MyNutritionsFacts setFat(int fat) {
this.fat = fat;
return this;
}
public int getSodium() {
return sodium;
}
public MyNutritionsFacts setSodium(int sodium) {
this.sodium = sodium;
return this;
}
public int getCarbohydrate() {
return carbohydrate;
}
public MyNutritionsFacts setCarbohydrate(int carbohydrate) {
this.carbohydrate = carbohydrate;
return this;
}
public static void main(String[] args) {
MyNutritionsFacts m = new MyNutritionsFacts().setCalories(10)
.setCarbohydrate(20).setFat(30).setServings(40)
.setServingSize(50).setSodium(60);
}
}
请多多指教。
分享到:
相关推荐
《Effective Java》是Java开发领域的经典著作,作者Joshua Bloch深入浅出地阐述了编写高效、健壮的Java代码的技巧和最佳实践。以下是对该书部分内容的详细解释: 1. **产生和销毁对象** - Item1:静态工厂方法相比...
以下是对《Effective Java》笔记中可能涉及的关键知识点的详细解读: 1. **单例模式**:书中强调了如何正确实现单例模式,推荐使用`enum`来创建线程安全且唯一的实例,避免传统双重检查锁定的潜在问题。 2. **构造...
### Effective Java读书笔记(上) #### 第一章 引言 本书主要针对Java开发者提供了大量实用的编程指导建议,帮助读者提升代码质量和程序性能。在本章节中,我们将重点介绍对象的创建与销毁,以及一些重要的设计...
【Java入门级学习笔记】 ...总之,Java学习笔记旨在为初学者提供全面的学习路径,从基础知识到核心概念,再到实际应用,逐步构建扎实的Java编程基础。通过持续学习和实践,你可以逐渐掌握这门强大且多用途的语言。
Java编程语言是全球范围内广泛应用的开发语言之一,尤其在企业级应用、云计算、大数据和移动应用等领域占有重要地位。对于初学者来说,掌握Java的基本概念和技术是至关重要的。本资源集合提供了一份完整的“Java学习...
Java学习笔记 Effective Java Topic2:插件销毁对象 2. 多参数情况 使用重叠构造器; 使用Build模式【构建器】: new A.Build().set.set.build(); Build模式也适用于类层次结构 递归类型参数 /* * 递归类型参数: ...
1. **《核心Java笔记》(core-java-notes)**:这本书可能包含了Java语言的核心概念,如变量、数据类型、控制流(条件语句、循环)、类与对象(封装、继承、多态)、异常处理、文件I/O、集合框架(ArrayList、...
此外,还可以参考一些经典书籍,如《Effective Java》等。 #### 18. 善用搜索引擎 遇到问题时,学会利用搜索引擎查找答案是非常重要的。Google等搜索引擎提供了丰富的资源,只需输入关键词就能找到大量相关的信息。...
根据提供的文件信息,我们可以深入探讨Maven的基本概念及其在构建Java项目中的具体应用。Maven是一种流行的自动化构建工具,主要用于Java项目的构建、依赖管理和项目信息管理。以下将围绕标题、描述以及部分内容中...
- **书籍**:《Effective Java》、《Java Concurrency in Practice》、《Clean Code: A Handbook of Agile Software Craftsmanship》等经典书籍深入讲解Java编程技巧和最佳实践。 - **社区与论坛**:Stack Overflow...
1. 阅读经典书籍:诸如《Effective Java》、《Java核心技术卷》等书籍能提供深入的见解和实例,帮助深化理解。 2. 参加在线课程和研讨会:利用Coursera、Udemy等平台的课程,获取专业讲师的指导,通过实践项目提升...
在《BookReading》的笔记中,你会看到对《Thinking in Java》这本书的解读,这本书是Bruce Eckel的经典之作,详细介绍了Java的基础知识和高级特性。你将了解到如何创建和使用类,如何处理异常,以及如何进行多线程...
在这个压缩包中,可能包含了一些经典的Java书籍的电子版或者读书笔记,如《Effective Java》、《Java并发编程实战》等。这些书籍可以帮助读者深入理解Java语言的核心特性,学习如何编写高效、可维护的代码,并了解多...
对于学习 drools 的初学者,理解这些基础概念至关重要,它们将帮助你构建复杂的规则系统,实现业务逻辑的自动化和智能化。在实际应用中,根据需求灵活运用这些特性,可以极大地提升软件系统的可维护性和扩展性。
作者提到,这种方法受到广泛赞誉的《Effective Java》的启发,该书在介绍Java编程时也尽量避免长篇代码,而是采用短小精悍的代码段落。 **5. 关于文档的定位** Clojure Handbook不是严格的教程,也不是纯粹的手册...
通过比较C++与其他编程语言(如Java、Python等)的异同之处,可以加深对C++特性的理解。同时也能拓宽视野,了解到不同场景下最适合使用的工具。 ### 26. 实践是检验真理的唯一标准 无论理论知识多么丰富,最终还是...
- 推荐学习《Thinking in C++》,这本书对于理解面向对象编程非常有帮助。 - **建议**:同时参考《The C++ Programming Language》和《Inside The C++ Object Model》,这两本书对深入理解C++标准库和对象模型非常...
- **解释**:作为一门功能强大的编程语言,C++具备高度的灵活性与控制力,但这也意味着它比其他一些现代语言(如Python或Java)更难上手。初学者在学习过程中会遇到诸多挑战,比如指针、内存管理等复杂概念。 - **...