SORU
30 Mart 2013, CUMARTESİ


Ne someObject.yeni` Java mı?

Java, aşağıdaki kodu yasal olduğunu öğrendim:

KnockKnockServer newServer = new KnockKnockServer();                    
KnockKnockServer.receiver receive = newServer.new receiver(clientSocket);

BİLGİNİZE, alıcı aşağıdaki imza ile sadece bir Yardımcı Sınıf

public class receiver extends Thread {  /* code_inside */  }

Daha önce XYZ.new gösterimde gördüm. Nasıl çalışır? Daha geleneksel kod için herhangi bir yolu var mı?

CEVAP
30 Mart 2013, CUMARTESİ


Oracle docs açıklanan içeren sınıf beden dışında statik olmayan iç sınıf oluşturmak için.

Her iç sınıf örneği içeren kendi sınıfının bir örneği ile ilişkilidir. Ne zaman 7 ** iç sınıfındaniçindeiçeren sınıfının varsayılan olarak konteyner this örnek kullanır:

public class Foo {
  int val;
  public Foo(int v) { val = v; }

  class Bar {
    public void printVal() {
      // this is the val belonging to our containing instance
      System.out.println(val);
    }
  }

  public Bar createBar() {
    return new Bar(); // equivalent of this.new Bar()
  }
}

Ama eğer Bar örneği dışında bir Foo oluşturmak, ya da içeren bir örnek this dışında yeni bir örneğini ilişkilendirmek istiyorsanız, o zaman önek gösterimini kullanmak zorunda.

Foo f = new Foo(5);
Foo.Bar b = f.new Bar();
b.printVal(); // prints 5

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BetterCoder

    BetterCoder

    17 Aralık 2012
  • FattySpins's channel

    FattySpins's

    17 Mayıs 2009
  • iNCH

    iNCH

    20 Temmuz 2009