JDK tarafından sağlanan üreysel türleri (generic types) ve metotları kullanmak çok zor olmasa da, kendiniz üreysel türler yazmak istediğinizde biraz zorlanabilirsiniz ama bunu öğrenmeniz çok faydalı olacaktır. Şimdi Madde 7’deki basitleştirilmiş yığıt (stack) gerçekleştirimine bakalım: Bu sınıf en başından beri üreysel olmalıydı ama sonradan mevcut istemcilere zarar vermeden üreysele dönüştürmek…
2 CommentsTag: joshua bloch
Yazıya başlamadan önce Java derleyicisinin verdiği kontrolsüz uyarı (unchecked warning) ne anlama geliyor ondan bahsedelim. Kısaca, derleyici burada bize tür güvenliğini (type safety) garanti edemediğini söylemektedir. Burada ”kontrolsüz” ifadesi biraz yanıltıcıdır çünkü uyarının kontrolsüz olması söz konusu değildir. İfade etmek istediği şey, derleyicinin tür güvenliğini sağlamak için yeterli tür bilgisine…
1 CommentTanımında bir veya birden fazla tür parametresi bulunduran sınıf veya arayüzlere üreysel (generic) sınıf veya arayüz denir. Örneğin, List arayüzü E isminde, listedeki elemanların türünü temsil eden bir tür parametresi bulundurur. Burada üreysel arayüzün tam adı List<E> olmaktadır. Üreysel sınıflar ve arayüzler toplu olarak üreysel türler olarak anılırlar. Her üreysel…
3 CommentsHer ne kadar Java derleyicisi sizlere tek bir kaynak dosyada birden fazla gömülü olmayan sınıf (top-level class) tanımlamaya izin verse de, bunu yapmanın bir faydası yoktur hatta ciddi riskleri vardır. Buradaki risk, bir sınıfın farklı yerlerde farklı şekillerde tanımlanabilir olmasıdır. Bu durumda hangi tanımın kullanılacağı, kaynak dosyaların hangi sırada derleyiciye…
Leave a CommentBaşka bir sınıfın içinde tanımlanan sınıflara gömülü sınıf (nested class) denir. Gömülü sınıflar sadece içerisinde tanımlı oldukları sınıfa hizmet ederler. Eğer başka bir yerde de faydalı olabileceklerse, kendi başlarına normal bir sınıf olarak tanımlanmaları gerekir. Java’da dört çeşit gömülü sınıf vardır: statik üye sınıflar (static member class), statik olmayan üye…
2 CommentsNesnelerinin mantıksal olarak birbirlerine yakın şeyler ifade etmesi sebebiyle tek bir sınıf içerisinde tanımlanan, bir işaret (tag) alanı ile nesnenin tam olarak neyi temsil ettiğini gösteren sınıflara işaretli sınıf diyebiliriz. Aşağıda, her ikisi de birer geometrik şekil olması sebebiyle hem bir daireyi hem de dikdörtgeni ifade edebilmek için yazılmış bir…
Leave a CommentBir sınıf bir arayüzü uyguladığı zaman, arayüz bu sınıftan oluşturulan nesneler için bir ”tür” olarak kullanılabilir. Bu sayede sınıfı kullanan bir istemci, sınıfı bir arayüz referansı ile temsil ederek arayüzdeki işlevlere erişebilir. Böylece istemciler sınıfın yapabilecekleri konusunda fikir edinmiş olur. Arayüzleri bu amaç dışında kullanmak uygun değildir. Bu tarz uygun…
Leave a CommentJava dilinde birden fazla gerçekleştirime (implementation) izin veren türleri tanımlamak için iki mekanizma bulunmaktadır: arayüzler ve soyut sınıflar (abstract class). Java 8 öncesinde arayüzlerde sadece metot imzalarını tanımlayabilirken, Java 8 ile eklenen varsayılan metotlar (default method) sayesinde, arayüzler içerisinde de soyut sınıflarda olduğu gibi somut metotlar yazabilir hale geldik. Ancak…
Leave a CommentMadde 18’de, kalıtılmak için tasarlanmamış ve belgelenmemiş (dokümantasyon) yabancı sınıfları kalıtmanın tehlikeli olduğunu söylemiştik. Peki ama bir sınıfın kalıtım için tasarlanması ve belgelenmesi ne anlama gelmektedir? Birincisi, sınıf içerisinde bulunan her bir metot için, geçersiz kılındığında ne gibi etkiler olacağı net olarak belgelenmelidir. Başka bir deyişle, sınıf geçersiz kılınabilen (override…
Leave a Comment