Ana içeriğe atla

Java Metod Referansı

Java 8 ile birlikte gelen yeni bir özellik olan metod referansını bu yazıda ele alacağız. Java 8 mi kaldı demeyin, zira Java 8 ile gelen birçok yenilik halen kullanılmaktadır, dolayısıyla Java 8'i iyi anlamak, gelecek sürümler için iyi bir kazanımdır. Herşey tamamsa başlayalım.

Java'da 3 tip metod referans çeşidi vardır. Bunlar;

- Statik metoda referans vermek
- Nesnelerin metotlarına referans vermek
- Kurucu metotlara referans vermek

Şimdi bunları sırayla inceleyelim.


 Statik Metoda Referans Vermek

1- Statik metotlara referans vermek, adı üzerinde static tipindeki metotlara referans vermektir. Örneğin elimizde fonksiyonel arayüzümüz var. Yani sadece tek metodu bulunan interface var. Bu tek metodu başka bir static metoda bağlamak için şu şekilde bir örnek yapabiliriz. 

2- İstersek bir static metodu Thread'e parametre olarak vererek çalıştırılmasını sağlayabiliriz.
3- Java tarafından önceden tanımlanmış fonksiyon arayüzleri ile birlikte kullanabiliriz. Örneğine BiFunction, Java içerisinde bulunan ve 2 nesneyi alıp bir metoda gönderen ve bu metottan döndürülen sonucu bize veren bir fonksiyon arayüzüdür. Örneğimizde BiFunction ile bir örnek yaptık.

Nesnelerin Metoduna Referans Vermek

Bu kullanım şeklinin yukarıdaki kullanımlardan tek farkı, referans verilen metodun bir nesneye ait olmasıdır. Yani static olmak zorunda değildir. Thread örneğini, bir de nesne oluşturarak yapalım.

Kurucu Metoda Referans Vermek

Eğer isterseniz bir sınıfın kurucu metoduna da referans gösterebilirsiniz. Bunun için, SinifAdi::new şeklinde kullanmanız gerekir. Bir örnek vermek gerekirse;
Evet, şimdi örneklere bakıp tüm bunların gereksiz olduğunu düşünebilirsiniz, hatta belki okuyanların çoğu filmin yarısında salonu terketmiş de olabilir... Bu metot referansının ne işe yarayacağını da anlamamış,merak etmiş olabilirsiniz. Evet haklısınız, örnekler metot referansının nerede kullanılacağını göstermekten çok, nasıl kullanılabileceğini göstermek üzere hazırlanmıştır. Metot referansı, lambda ifadelerinin yerine kullanıldığı zaman anlamlı olacaktır. Yani zaten işimizi lambda ifadeleri kullanarak oldukça kısaltıyorduk, ama bu metot referanslarını kullanarak daha da kısa kodlar yazabiliriz. Mesela bir örnekle görelim.
Bildiğimiz gibi println() metodu static metottur. Bu bilgiden yararlanarak, metot referansını kullanıp şöyle birşey yazabilir miyiz?
Sanki biraz daha temiz oldu, değil mi? Pekala, bir başka örnek daha yapalım. Elimizdeki dizide bulunan çift sayıları ekrana yazalım.
Şimdi bir de metod referansı kullanarak aynı programı yazalım.
Oldukça sade! Tabi, burada filtreleme metodunda olarak referans göstermek yerine number -> number%2==0 yazarım diyebilirsiniz. Haklısınız, ama kontrol yapmanız gereken işlemin her zaman bu kadar basit olmayabileceğini de unutmayın...

Bir başka yazıda buluşmak dileğiyle...

kaynak: https://www.javatpoint.com/java-8-method-reference

Yorumlar

Bu blogdaki popüler yayınlar

Python Soket Programlama

Merhaba arkadaşlar. Bugün sizlerle birlikte Python'da socket programlama yapacağız. Bunun için Python da socket kütüphanesini kullanacağız. Peki nedir bu socket programlama? Soket programlama, sizin iki program arası yada iki bilgisayar arası iletişim kurmanızı sağlar. İşte bizde bugün iki programımızı birbiri ile haberleştireceğiz. Bunun için elimizde iki program olacak. Birinci program,mesaj bekleyen program olacak, diğeri ise mesaj gönderen program.

Python Subprocess

subprocess modülü, yeni bir process oluşturmayı sağlayan, bunların girdi-çıktılarını ele alma imkânı veren ve dönüş kodlarını almayı sağlayan bir modüldür. Yani daha basit bir şekilde, program içinde program çalıştırmaya imkan veren bir modüldür. Subprocess Modülünün Kullanımı subprocess basit bazı process'leri kullanmak için birkaç tane fonksiyon sunuyor. Daha karmaşık bir process çalıştırmak isterseniz, Popen sınıfını kullanabilirsiniz. Bunlara detaylı bir şekilde değinmeye çalışacağız. Şimdi basit fonksiyonları inceleyelim

Infix to postfix dönüşümü

Infix to postfix dönüşümü, operatorün ortada olduğu a+b yazım şeklini operatorün sonda olduğu ab+ yazım şekline dönüştürme işlemidir.  Infix gösterimi, bizler için kolay bir gösterim olsa da makineler için öyle değildir. İfadeyi soldan sağa doğru okurken a + b * c işleminde önce b ile c yi çarpıp sonra da a ile toplamayı kolay bir şekilde yapabiliriz çünkü bizim ifadeyi sıra ile soldan sağa adım adım giderek okuma zorunluluğumuz yok. Önce b*c nin öncelikle olduğunu görerek oradan başlar, sonra a ile kolayca toplarız.