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

  • Amena

    Amena

    15 Kasım 2006
  • Jeremy Gallman

    Jeremy Gallm

    11 NİSAN 2012
  • Kayla Caton - Peet

    Kayla Caton

    23 HAZİRAN 2012