Aslında sorum direk java ile alakalı değil, android ile alakalı birkaç örnekte

final Button button = (Button) findViewById(R.id.button_id);

şeklinde nesne tanımlanıyor ancak buradaki final erişim belirleyicisinin bu nesneye hükmü nedir tam olarak?

Şimdiden teşekkürler.

soruldu: 28 Eyl '12, 04:02

lastarabos's gravatar image

lastarabos
1.8k122742
cevap kabul oranı: 29%


button degiskeni final ise, tekrar bu degiskene bir deger atamasi yapilamaz. Bu sekilde degiskenlerin sahip oldugu degerlerin yanlislikla silinmesi engellenebilmektedir.

not: soru daha cok Java ile ilgili, Android'le degil :)

permanent link

cevaplandı: 28 Eyl '12, 04:06

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183
cevap kabul oranı: 52%

Haklısınız java ile alakalı ama hani android içinde kullanılınca ve butona böyle bir erişim belirleyicisi verince androidde işler nasıl oluyor açısından sormuştum. Çok teşekkürler. :)

(28 Eyl '12, 04:08) lastarabos lastarabos's gravatar image

@özcanacar, Hocam, siz "bu şekilde değişkenkerin sahip olduğu değerlerin yanlışlıkla silinmesi engellenebilmektedir" demişsiniz fakat bunu anlayamadım. Aşağıda @Burhan ARAS'a yorum olarak sormuştum. Bir bakar mısınız? Kısaca, "button" referansını daha sonradan başka bir nesneye neden bağlayalım ki, gibi bir düşünceyle karşılaşıp yanıtsız kalıyorum.

(14 Nis '13, 06:37) murtaza murtaza's gravatar image
1

Bu genelde uzun metotlarda karsilasilan bir sorun. Örnegin metot parametreleri final olmadigi zaman, metot icinde bu metot parametrelerine baska bir deger atamak mümkün ve bu genelde programcinin farkinda olmadan yaptigi bir islem. Böylece bu parametrelerin metoda girerken tasidiklari degerler kaybolmaktadir. Bu sakinilmasi gereken bir durum, cünkü degiskenin degeri istenmeden degistirildi ise, daha sonra degiskenin orjinal degerini ihtiva ettigini düsünerek islem yapmak hatali sonuc dogurur. Degisken final ise compiler yeni bir atamaya izin vermeyecektir.

(18 Nis '13, 02:51) özcanacar ♦♦ %C3%B6zcanacar's gravatar image

final keywordu yanlış anlaşılmaya müsaittir.

burada buttonun kendisi sonradan değiştirilemez, ama sahip olduğu değerler değiştirilebilir. (tezti, rengi vs..). çünkü button bir objecttir, primitive değildir.

fakat "button = " şeklinde başlayan bir komut yani atama işlemi yapılamaz! final bunu sağlar. Teşekkürler.

permanent link

cevaplandı: 03 Eki '12, 16:49

Burhan%20ARAS's gravatar image

Burhan ARAS
7612
cevap kabul oranı: 0%

Neden bir View nesnesine sonradan atama yaptıralım ki? Bunun ne getirisi var? Kodu yazan biziz, kendimizi sonradan yapabileceğimiz hatamızdan mı koruyoruz böylece?

Bir de final olan "button" referensına atama yapamıyoruz ama işaret ettiği nesnede değişiklikler yapabiliyoruz. Bu benim kafamı karıştırıyor. Yani referansı "başka nesneye bağlanamaz" kılmanın artısı nedir?

(14 Nis '13, 06:33) murtaza murtaza's gravatar image

ayrıca final belirleyicisiyle tanımlanmış bir değişken bir alt küme içerisinde de görülebilir. Biraz soyut bir örnek olacak ama örneğin:

Label myLabel = new Label();
Button myBtn = new Button();

myBtn.addListener(new ClickListener() {
    public void onClick() {
        myLabel.setTitle("This is an example");
    }
});

buradaki kod çalışmayacaktır çünkü bir alt kümeden bir üst kümedeki değişkene erişilmeye çalışılıyor. Ona erişebilmek için myLabel değişkenini final belirteciyle tanımlamak gerekiyor. Bu da java'nın bir kuralı işte. Kodlar herhangi biryere ait değil sadece örnek olması açısından yazdım.

permanent link

cevaplandı: 06 May '13, 17:57

kodmanyagha's gravatar image

kodmanyagha
3.1k132852
cevap kabul oranı: 15%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,077

Soruldu: 28 Eyl '12, 04:02

Görüntüleme: 958 kez

Son güncelleme: 06 May '13, 17:57

powered by BitNami OSQA