Effective in java 中推荐一种叫构建器的方法, 其实质就是在类中创建一个静态内部类来完成对元素值的注入,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);
}
}
请多多指教。