SORU
15 ŞUBAT 2011, Salı


Builder Etkili Java Desen

Son zamanlarda Joshua Bloch tarafından Etkili Java okumaya başladım. Üreticisinin fikir [kitap ürün 2] gerçekten ilginç desen buldum. Bunu uygulamak için projemde denedim ama derleme hatası vardı. Aşağıdaki yapmaya çalıştığım şey özünde

Birden çok öznitelik ve üretici sınıf sınıf:

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;
    }
}

Yukarıdaki sınıf kullanmaya çalıştığım yerde sınıf

public class Main {
    public static void main(String args[]) {
        NutritionalFacts n = 
            new NutritionalFacts.Builder(10).carbo(23).fat(1).build();
    }
}

Aşağıdaki derleyici hata alıyorum:

kapsayan bir örneğini içerir effectivejava.BuilderPattern.NutritionalFacts.Oluşturucu gereklidir NutritionalFacts n = yeni NutritionalFacts.Builder(10).carbo(23).yağ(1).() kuruyoruz

Mesajın ne anlama geldiğini anlamıyorum. Lütfen açıklayın. Yukarıdaki kod örneği Bloch tarafından önerilen kitabında benzer.

CEVAP
15 ŞUBAT 2011, Salı


Oluşturucu static bir sınıf olun. Daha sonra bu iş olacak. Eğer statik olmayan ise, sahip olduğu sınıfının bir örneğini gerektirir - ve bu nokta bir örnek değil, ve hatta builder olmadan örneklerini yapma korusun.

public class NutritionFacts {
    public static class Builder {
    }
}

Referans: Nested classes

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • colacas

    colacas

    29 EKİM 2006
  • MyCyberAcademy

    MyCyberAcade

    2 EKİM 2011
  • NPR

    NPR

    22 NİSAN 2006