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

  • Breno Rises

    Breno Rises

    7 Ocak 2014
  • calicoJake

    calicoJake

    29 EKİM 2007
  • Digital Bounds

    Digital Boun

    19 Temmuz 2013