2014-09-22 10 views
1

나는 효과적인 자바 항목 # 2에게 그것은 그 자바 빈은 여러 매개 변수를 사용하여 객체를 생성 할 수있는 효과적인 방법이 아니다 여기라고효과적인 자바 : 빌더 패턴

http://www.informit.com/articles/article.aspx?p=1216151&seqNum=2

빌더 패턴을 읽고 있었다. 그러나 나는 자바 빈즈이 방법이있는 경우 :

NutritionFacts cocaCola = new NutritionFacts(); 
cocaCola.setServingSize(240); 
cocaCola.setServings(8); 
cocaCola.setCalories(100); 
cocaCola.setSodium(35); 
cocaCola.setCarbohydrate(27); 

뭐죠 : 나는 최종

이제 인스턴스를 생성 할 수있는이 방법으로 모든 멤버 변수를 만들어

// JavaBeans Pattern 
public class NutritionFacts { 
private final int servingSize ; 
private final int servings ; 
private final int calories; 
private final int fat; 
private final int sodium; 
private final int carbohydrate; 
public NutritionFacts() { } 
// Setters 
public void setServingSize(int val) { servingSize = val; } 
public void setServings(int val) { servings = val; } 
public void setCalories(int val) { calories = val; } 
public void setFat(int val) { fat = val; } 
public void setSodium(int val) { sodium = val; } 
public void setCarbohydrate(int val) { carbohydrate = val; } 
} 

주 내가 이렇게하면 틀린가요? 누군가 나를 이해하도록 도와 줄 수 있습니까? 감사합니다. Rajan

답변

4

불행히도 컴파일에 실패했습니다. 그 이유는 변수 final을 선언했기 때문입니다. 은 생성자가 완료 될 때까지을 초기화해야합니다.

이것은 최종 변수에 대한 설정자가 의미가 없으며이 문제를 해결하기 위해 종종 Builder 패턴이 사용되는 이유입니다.