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

  • ASUS Campus Life

    ASUS Campus

    18 Mart 2013
  • CZTUTORIALS

    CZTUTORIALS

    28 Ocak 2011
  • Tips On Linux

    Tips On Linu

    26 Temmuz 2008