:: یا double colon یک روش آسان برای استفاده از متد های موجود به سبک برنامه نویسی functional در جاوا 8 است، این عملگر reference یک متد را بر می گرداند.
کلاس Person را در نظر بگیرید:
public class Person {
/////
public Calendar getBirthday() {
return birthday;
}
public static int compareByAge(Person a, Person b) {
return a.birthday.compareTo(b.birthday);
}
}
کد زیر استفاده از Comparator در جاوا (نسخه قبل از 8) برای مقایسه آرایه Person را نمایش می دهد:
Person[] personArray = ...;
class PersonAgeComparator implements Comparator<Person> {
public int compare(Person a, Person b) {
return a.getBirthday().compareTo(b.getBirthday());
}
}
Arrays.sort(personArray, new PersonAgeComparator());
کد زیر با استفاده از lambda expression در جاوا 8 بصورت زیر می شود:
Arrays.sort(personArray,
(Person a, Person b) -> {
return a.getBirthday().compareTo(b.getBirthday());
}
);
با استفاده از method reference کد فوق می تواند بصورت زیر ساده تر شود:
Arrays.sort(personArray, Person::compareByAge);