Press "Enter" to skip to content

Tag: effective java

Effective Java Madde 41: İşaretçi Arayüzleri Tür Tanımlamak için Kullanın

İşaretçi arayüzler (marker interface) içlerinde hiçbir metot bulunmayan arayüzlerdir. Bunları uygulayan sınıfların amacı sahip oldukları bir özelliği ortaya çıkarmak için kendilerini işaretlemektir. Serializable arayüzü buna örnek olarak verilebilir. Bunu uygulayan sınıflar nesnelerinin bir ObjectOutputStream‘e yazılabileceğini diğer bir tabirle serileştirilebilir olduklarını belirtmiş olurlar. Madde 39’da anlattığımız işaretçi notasyonlar varken işaretçi arayüzlerin…

Share
Leave a Comment

Effective Java Madde 40: Override Notasyonunu Sürekli Olarak Kullanın

Java kütüphaneleri çok sayıda notasyon (annotation) barındırırlar. Çoğu programcı için bunların en önemlisi @Override notasyonudur. Sadece metot tanımlarında kullanılabilen bu notasyon metodun kalıttığı sınıf veya uyguladığı arayüzdeki başka bir metodu geçersiz kıldığını belirtir. Bu notasyonu düzenli olarak kullandığınız taktirde sizi birçok hatadan koruyacaktır. Şimdi harf ikililerini ifade etmek için yazılmış…

Share
Leave a Comment

Effective Java Madde 38: Enumlarda Kalıtımı Arayüz Kullanarak Taklit Edin

Madde 34’de enumlardan bahsederken enum türlerinin kalıtılamayan (final) sınıflara dönüştürüldüğü söylemiştik. Dolayısıyla bir enum türü başka bir enum türünü kalıtamaz. Enum türleri zaten dolaylı olarak java.lang.Enum sınıfından türetildikleri için başka sınıfları kalıtması da mümkün değildir. Bu durum çoğu zaman bir sorun teşkil etmese de bazı enumları kalıtma ihtiyacı duyabiliriz veya…

Share
Leave a Comment

Effective Java Madde 37: Ordinal İndisler Yerine EnumMap Kullanın

Madde 35’de çoğu programcının enum türleri için tanımlanan ordinal metoduna ihtiyacı olmayacağını ve bu sebeple de çok nadir durumlar haricinde kullanılmaması gerektiğini söylemiştik. Bu maddede ise bazı programcıların ordinal kullanmayı tercih ettiği bir iki özel durum üzerinde duracağız. Bazen ordinal metodunun bir dizi veya liste için indis (index) olarak kullanıldığını…

Share
Leave a Comment

Effective Java Madde 36: Bit Alanları Yerine EnumSet Kullanın

Bir küme (set) içerisinde kullanılacağı düşünülen numalandırılmış türleri (enumerated type) temsil etmek için sıklıkla Madde 34’de gördüğümüz gruplanmış int değişmezleri yöntemi kullanılır. Ancak buradaki fark int değişkenlere yapılan atamaların bitsel işlemleri mümkün kılmak için 2’nin üsleri şeklinde olmasıdır. Bu kullanım size birden fazla STYLE_ değişmezini bitsel veya (bitwise OR) işlemine…

Share
1 Comment

Effective Java Madde 35: Ordinal Yerine Nesne Alanları Kullanın

Bütün enumlar ordinal adında bir metot içerirler. Bu metot enum sabitinin enum türü içinde tanımlandığı pozisyonu döndürür. Örnek olarak aşağıdaki enum türüne bakalım: Bu enum için ordinal değerlerine bakacak olursak: Kodun çıktısı aşağıdaki gibi olacaktır. Enumda ilk tanımlanan RED sabiti 0 değerini alırken sonrakiler de birer birer artarak ilerleyen sıra…

Share
1 Comment

Effective Java Madde 34: int Değişmezleri Yerine Enum Kullanın

Bir yılın içindeki mevsimler, haftanın günleri, güneş sistemindeki gezegenler gibi önceden belli bir takım değerler taşıyan türlere numaralandırılmış tür (enumerated type) denir. Enum türleri Java’ya eklenmeden önce numaralandırılmış türleri ifade edebilmek için aşağıdaki gibi gruplanmış int değişmezleri (constant) kullanılıyordu: Yukarıdaki gibi int değişmezlerinin gruplandığı bir kullanımın çok sayıda eksikliği vardır.…

Share
3 Comments

Effective Java Madde 33: Tür Güvenlikli Heterojen Taşıyıcıları Göz Önünde Bulundurun

Üreysel türlerin yaygın olarak bilinenleri Set<E>, Map<K,V> gibi koleksiyonlar ve ThreadLocal<T> ve AtomicReference<T> gibi tek elemanlı taşıyıcılardır. Bütün bu kullanımlarda taşıyıcı olan türün kendisi parametrelerle ifade edilmektedir. Bu bizi her taşıyıcı için sabit bir sayıda tür parametresi kullanmaya zorlamaktadır. Örneğin Set eleman türünü belirleyen tek bir tür parametresine sahiptir, Map…

Share
2 Comments

Effective Java Madde 31: API Esnekliğini Artırmak İçin Sınırlandırılmış Joker (bounded wildcard) Kullanın

Madde 28’de anlatıldığı üzere parametreli türler arasında hiçbir koşulda alt tür/üst tür ilişkisi bulunmaz. Örneğin String türü Object‘in bir alt türü olmasına rağmen, List<String> ile List<Object> arasında böyle bir ilişki bulunmaz. List<Object> içerisine istediğiniz türden nesneleri koyabilirsiniz ama List<String> sadece String türünden nesneler içerebilir. Bu durumda List<String> türü, List<Object> türünün…

Share
Leave a Comment

Effective Java Madde 30: Üreysel Metotları Tercih Edin

Tıpkı sınıflar gibi metotlar da üreysel (generic) olarak yazılabilir. Parametreli türlerle çalışan statik yardımcı metotlar (utility method) genellikle üreyseldir. Örneğin, Collections içerisindeki binarySearch ve sort gibi algoritma metotlarının hepsi üreyseldir. Üreysel metot yazmak üreysel tür yazmakla çok benzerdir. (Madde 29) İki kümenin birleşimini döndüren aşağıdaki kusurlu metoda bakalım: Bu metot…

Share
Leave a Comment
%d bloggers like this: