SORU
19 Ocak 2011, ÇARŞAMBA


Neden sadece son değişkenleri anonim sınıfta erişilebilir?

  1. a sadece son burada olabilir. Neden? Nasıl özel üye olarak tutmak olmadan onClick() yöntem a ata miyim?

    private void f(Button b, final int a){
            b.addClickHandler(new ClickHandler() {
    
                @Override
                public void onClick(ClickEvent event) {
                    int b = a*5;
    
                }
            });
    }
    
  2. Nasıl tıklandığında 5*a iade edebilir miyim? Yani

    private void f(Button b, final int a){
            b.addClickHandler(new ClickHandler() {
    
                @Override
                public void onClick(ClickEvent event) {
                     int b = a*5;
                     return b; // but return type is void 
                }
            });
    }
    

CEVAP
19 Ocak 2011, ÇARŞAMBA


Yorumlarda da belirtildiği gibi, bu çok final örtülü olabilir 8, Java ile alakasız olur.


Temelde yol yüzünden Java closures yönetir.

Anonim iç sınıf örneği oluşturduğunuzda, bu sınıf içinde kullanılan herhangi bir değişken var onlarındeğerlerotomatik kurucu ile kopyalanan. Bu engeller derleyici olması için autogenerate çeşitli ekstra türleri için basılı tutun mantıksal devletin "yerel değişkenler", örneğin C# derleyicisi yok... (C# yakalar bir değişken olarak bir anonim işlev, gerçekten yakalar değişken kapanması güncellemek değişken bir yolu olduğu görülen temel vücut yöntemi, ve tam tersi.)

Değer olmuştur içine kopyalanan örneğinin anonim iç sınıf, olur bak garip eğer değişken olabilir değiştiren dinlenme yöntemi - kod öyle görünüyor çalışma ile bir out-of-tarih değişken (çünkü bu etkili bir şeyolmuyor... bir kopyasını farklı bir zaman) alınan çalışacaksın. Anonim iç sınıf içinde değişiklik yapabilirsin aynı şekilde, geliştiriciler bu değişiklikleri kapsayan yönteminin gövdesinde görünür olmasını bekleyebilirsiniz.

Değişken son verme tüm bu olanakları - değeri değiştirilemez olarak, bu tür değişiklikler görülebilir olup olmadığı hakkında endişelenmenize gerek yok kaldırır. Yöntem ve anonim iç sınıf birbirimizin değişiklikleri görmek izin vermek için tek yolu bazı açıklamalar değiştirilebilir bir tür kullanmaktır. Bu dahili sınıf kendisini, bir dizi değişken sarıcı bir tür olabilir... böyle bir şey. Bir yöntem ve başka arasında iletişim kurmak gibi bir şey temelde: değişiklikler yaptıparametreleribir yöntemi, arayanın tarafından görülen değil, ama değişiklik nesnelere yaptıanılacaktırparametre görülür.

Eğer Java ve C arasında daha detaylı bir karşılaştırma ilgileniyorsanız# kilitler, gider article daha da var. Bu cevap:) Java tarafına odaklanmak istedim

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Awesome Toys TV

    Awesome Toys

    18 HAZİRAN 2014
  • DorkmanScott

    DorkmanScott

    14 NİSAN 2006
  • Google Developers

    Google Devel

    23 AĞUSTOS 2007