Bu Sayfayı Paylaş:

Kavram

Method Reference

Tanım: Java 8 ile birlikte gelen, bir methodu parametre olarak aktarmaya yarayan özellik. Referans olarak gönderilen method'un önüne :: ifadesi konulur

Veri

Method Reference Tipleri

Aşağıdaki gibi dört tip bulunmaktadır:
  • Static Method : Class::staticMethodName şeklinde çağrılır.
  • Kurucu : ClassName::new şeklinde çağrılır
  • Bir Nesnenin Instance Method'u : object::instanceMethodName şeklinde çağrılır. Örneğin System.out::println şeklinde out nesnesinin bir method'u çağrılmaktadır.

Örnek

ForEach ile Method Reference Örneği

Aşağıdaki örnekte, bir liste içinde dolaşırken System.out.println() method'u reference olarak verilmiştir.
package com.test.methodreference;

import java.util.ArrayList;
import java.util.List;

public class Test {

	public static void main(String args[]) {
		
		List values = new ArrayList();

		values.add("Neşet Ertaş");
		values.add("Mahsuni Şerif");
		values.add("Aşık Veysel");
		values.add("Hacı Taşan");
		values.add("Refik Başaran");

		values.forEach(System.out::println);
		
	}

}
forEach methodu Iterator interface'inde bulunan bir default method'ur. Bu method'a println method'u reference olarak verilmiştir. foreach döngü açarak sürekli println'i her eleman için çağıracaktır.

Örnek

Collections Sort İle Method Reference Örneği

Aşağıdaki gibi ad ve soyad bilgisini tutan bir Person sınıfımız olsun :
package com.test.methodreference;

public class Person {
	
	private String firstName;
	private String lastName;
	
	public Person(String firstName, String lastName) {
		this.firstName=firstName;
		this.lastName=lastName;
	}
	
	public String getFirstName() {
		return firstName;
	}
	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}
	public String getLastName() {
		return lastName;
	}
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
	
	public static int compareByLastName(Person p1, Person p2){
		return p1.getLastName().compareTo(p2.getLastName());
	}

	@Override
	public String toString(){
		return getFirstName()+" "+getLastName();
	}
}
compareByLastName static method'u iki ismi soyada göre karşılaştırmaktadır. Bu sınıfa göre bir Person listesini sıralayabiliriz :
package com.test.methodreference;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class TestPerson {

	public static void main(String args[]) {
		
		List values = new ArrayList();

		values.add(new Person("Albert","Einstein"));
		values.add(new Person("Isaac","Newton"));
		values.add(new Person("Galileo", "Galilei"));
		values.add(new Person("Max ","Planck"));
		values.add(new Person("Werner","Heisenberg"));
		
		Collections.sort(values,Person::compareByLastName);

		values.forEach(System.out::println);
		
	}

}
Collections.sort(values,Person::compareByLastName) satırında Person::compareByLastName diyerek Person sınıfının static method'u reference olarak verilmiştir. values.forEach(System.out::println) satırında ise System.out::println ile out nesnesinin bir method'u reference olarak verilmiştir. Uygulama çalıştığında aşağıdaki gibi bir çıktı olacaktır : Albert Einstein Galileo Galilei Werner Heisenberg Isaac Newton Max Planck



Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir