

Merhabalar
Elimizdeki sınıfa kendini Comparable ile implements neden yapılır? Bu durumun amacı nedir ?
soruldu: 26 Nis, 03:34
keramiozsoy


Comparable karşılaştırma işlemleri için kullanılır. Collection'dan türeyen tüm liste yapıları
Bu önemli özelliğin dışında nesneleri kendi istediğin özelliklerle karşılaştırmak için de kullanabilirsin. Aynı şeyi equals metodunu override edip de yapabilirsin. Normalde equals nesnelerin referanslarını karşılaştırıyorken, bunu değiştirebilirsin mesela sadece IDlerini karşılaştırabilirsin. Ama equals boolean değeri döndürdüğü için belki tam istediğini karşılamayabilir veya equals metodunu farklı sebeplerden dolayı bozmak istemeyebilirsin.
Verdiğin örnekte T'ye kendi tipini vermenin sebebi ise karşılaştırılan nesneler doğal olarak aynı tipte olmalıdır. EntityA ile EntityA compare edilecektir. Ancak T'ye kendini verme işi tasarıma göre değişebilir, T'ye başka tipler de verebilirsin, veya boş bırakabilirsin.
Person için yaşlarını karşılaştırma metodu düşünelim, Person'da id, name, age, location gibi değerler yer alsın. Tüm bunlarla kendi istediğin, özel compareTo metodunu yazabilirsin.
Mesela şimdi sadece yaşları üzerinden karşılaştıralım, bu koşullara başka parametreler de ekleyebilirsin:
Aynı yaştalarsa 0, büyük ve küçük durumuna göre 1 ve -1. Bu Java standardı olarak böyledir ama kullanıma göre bunu geliştirebilirsin.