Consumer<T>, DoubleConsumer, IntConsumer və LongConsumer funksional interfeysləri nə üçün istifadə olunur?
sobes.tech Süni İntellekt
AI-dan cavab
Fəaliyyət interfeysləri Consumer<T>, DoubleConsumer, IntConsumer və LongConsumer giriş arqumenti qəbul edən və nəticə qaytarmayan əməliyyatları təmsil etmək üçün istifadə olunur. Onlar java.util.function paketinə daxildir.
Consumer<T>: Hər hansıTtipində arqument qəbul edir.DoubleConsumer:doubletipində arqument qəbul edir. Bu,Consumer-ın primitiv ixtisaslaşmasıdır və avtomatik qutulamağı (autoboxing) qarşısını alır və daha səmərəli işləyir.IntConsumer:inttipində arqument qəbul edir. Eyni zamanda, səmərəlilik üçün primitiv ixtisaslaşmadır.LongConsumer:longtipində arqument qəbul edir. Yana bir primitiv ixtisaslaşmadır.
Bu interfeyslərin əsas istifadəsi Lambdas və metod referanslarında olur. Onlar Java stream API-də elementlər üzərində yan təsirlər həyata keçirmək üçün tez-tez istifadə olunur, məsələn, konsola çap etmək və ya xarici vəziyyəti dəyişdirmək üçün.
Consumer<T>-in istifadə nümunəsi:
// Sətiri çap edən Consumer yaradılması
Consumer<String> printConsumer = s -> System.out.println(s);
// Consumer-in tətbiqi
printConsumer.accept("Salam, dünya!");
// Stream-də istifadə
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream().forEach(n -> System.out.println(n)); // Lambda ilə Consumer istifadəsi
IntConsumer-in istifadə nümunəsi:
// Rəqəmi çap edən IntConsumer yaradılması
IntConsumer printIntConsumer = i -> System.out.println(i);
// IntConsumer-in istifadəsi
printIntConsumer.accept(10);
// Primitiv int axınında istifadə
IntStream.range(1, 5).forEach(printIntConsumer); // Daha səmərəli
Primitiv ixtisaslaşmalar (DoubleConsumer, IntConsumer, LongConsumer) primitiv tiplərlə işləyərkən boxing/unboxing əməliyyatlarından qaçmaq və performansı artırmaq üçün Consumer<T>-in ümumi analoqlarından üstün tutulmalıdır.