Java Functional Interface Nedir?
Bu yazıda, Java 8 ile birlikte gelen Functional Interface özelliğinin ne olduğu ve nasıl kullanılacağına dair açıklamalar yapacağım. Ayrıca, bu özelliğin pratikte nasıl kullanılabileceğini gösteren örnekler de paylaşacağım.
Nedir?
Java’da bir fonksiyonel interface, bir abstract metot bulunan bir interface’dir. içeren bir arayüzdür. Functional interface’ler ile birlikte lambda ifadeleri de kullanabilir.
Kullanımı
Java’da bir fonksiyonel interface oluşturmak için, bir interface tanımlamanız gerekir ve bu interface sadece bir tane abstract metot tanımlamanız gerekir. @FunctionalInterface
anotasyonunu belirterek fonksiyonel bir interface olduğunu belirtiyoruz.
@FunctionalInterface
public interface InterfaceExample {
int apply(int x, int y);
}
Code language: PHP (php)
Tanımlamasını yaptığımız fonkisyonel interface’yi lambda expression sayesinde kullanarak çağırabiliyoruzç
InterfaceExample sum = (x, y) -> x + y;
int result = sum.apply(3, 4);
Java’da Functional Interfaceler
Java’da bazı hazır functional interfaceler barındırmaktadır.
Consumer
Consumer
fonksiyonel interface, bir veri girişi olan ve geri bir değer döndürmeyen sınıftır. Bu sayede bir veri yapısını gezinebilir ve her bir öğeyi bir işlev gerçekleştirerek işleyebilirsiniz.
Consumer Örneği
public class Main {
public static void main(String[] args) {
List<String> list = List.of("burak", "ahmet", "mehmet");
Consumer<String> printItem = item -> System.out.println(item);
list.forEach(printItem);
}
}
Code language: PHP (php)
Consumer
interfacesi oluşturduk ve liste içindeki tüm öğeleri yazdıran bir metot yazdık. Çıktı aşağıdaki gibi olacaktır.
burak
ahmet
mehmet
Predicate
Predicate
bir girdi alır ve bir boolean
değeri döndürür.
Predicat Örneği
public class Main {
public static void main(String[] args) {
Predicate<Integer> pozitifMi = (sayi) -> sayi > 0;
int[] sayilar = {-1, 0, 1, 2, 3};
for (int sayi : sayilar) {
if (pozitifMi.test(sayi)) {
System.out.println(sayi + " pozitiftir");
}
}
}
}
Code language: JavaScript (javascript)
Bir sayının pozitif olup olmadığı kontrol eden bir functional interface yazdık ve bu metot sayesinde liste içerisindeki değerleri kontrol edebiliyiriz.
Function
Function
bu tür bir fonksiyonel interfacedir ve bir girdi alır ve bir çıktı döndürüren işleve sahiptir.
Function Örneği
Mutlak değerini alan bir fonksiyonel interface yapıyalım. Bir çıktı döndüren Function
dan faydalanıyoruz.
public class Main {
public static void main(String[] args) {
Function<Integer, Integer> abs = (sayi) -> Math.abs(sayi);
int[] numbers = {-1, 0, 1, 2, 3};
for (int sayi : sayilar) {
System.out.println(sayi + " mutlak değeri " + abs.apply(sayi));
}
}
}
Code language: PHP (php)
Supplier
Supplier
interface bir değer döndürmeyen bir metotdur.
Supplier Örneği
public class Main {
public static void main(String[] args) {
Random random = new Random();
Supplier<Integer> randomSupplier = () -> random.nextInt();
System.out.println(randomSupplier.get());
}
}
Code language: JavaScript (javascript)
Suplier için bir değer döndürmeyen yazmışsınız ama değer almayan olacaktı, yazım yanlışı olmuş. Yazı içinde teşekkürler emeğinize sağlık.
Geri bildiriminiz için teşekkür ederim. 🙂