Gần đây tôi đã bắt đầu đọc Java hiệu quả của Joshua Bloch. Tôi thấy ý tưởng về mẫu Builder [Mục 2 trong cuốn sách] thực sự thú vị. Tôi đã cố gắng thực hiện nó trong dự án của tôi nhưng có lỗi biên dịch. Sau đây là bản chất những gì tôi đã cố gắng làm:
Lớp có nhiều thuộc tính và lớp trình tạo của nó:
public class NutritionalFacts {
private int sodium;
private int fat;
private int carbo;
public class Builder {
private int sodium;
private int fat;
private int carbo;
public Builder(int s) {
this.sodium = s;
}
public Builder fat(int f) {
this.fat = f;
return this;
}
public Builder carbo(int c) {
this.carbo = c;
return this;
}
public NutritionalFacts build() {
return new NutritionalFacts(this);
}
}
private NutritionalFacts(Builder b) {
this.sodium = b.sodium;
this.fat = b.fat;
this.carbo = b.carbo;
}
}
Lớp nơi tôi cố gắng sử dụng lớp trên:
public class Main {
public static void main(String args[]) {
NutritionalFacts n =
new NutritionalFacts.Builder(10).carbo(23).fat(1).build();
}
}
Tôi nhận được lỗi trình biên dịch sau:
một ví dụ kèm theo có chứa hiệu quả.BuilderPotype.NutologistsFacts.Builder là bắt buộc về dinh dưỡng
Tôi không hiểu ý nghĩa của tin nhắn. Vui lòng giải thích. Đoạn mã trên giống với ví dụ được đề xuất bởi Bloch trong cuốn sách của mình.