Ի՞նչ է անհրաժեշտ ֆունկցիոնալ ինտերֆեյսներ Consumer<T>, DoubleConsumer, IntConsumer և LongConsumer-ը։
sobes.tech AI
Պատասխան AI-ից
Ֆունկցիոնալ ինտերֆեյսները Consumer<T>, DoubleConsumer, IntConsumer և LongConsumer օգտագործվում են այն գործողությունների ներկայացման համար, որոնք ընդունում են մեկ մուտքային արգումենտ և չեն վերադարձնում արդյունք: Նրանք մաս են կազմում java.util.function փաթեթի:
Consumer<T>: ընդունում է ցանկացածTտիպի արգումենտ:DoubleConsumer: ընդունում էdoubleտիպի արգումենտ: ՍաConsumer-ի պրիմիտիվ մասնագիտացումն է, որը խուսափում է ավտոմատ բոքսավորումից և աշխատում է ավելի արդյունավետ:IntConsumer: ընդունում էintտիպի արգումենտ:LongConsumer: ընդունում էlongտիպի արգումենտ:
Այս ինտերֆեյսների հիմնական կիրառությունը Lambda-ներում և մեթոդների հղումներում է: Դրանք հաճախ օգտագործվում են Java stream API-ում՝ սթրիմի տարրերի վրա կողմնակի ազդեցություններ կատարելու համար, օրինակ՝ կոնսոլին տպելու կամ արտաքին վիճակն փոփոխելու համար:
Օրինակ՝ Consumer<T>-ի օգտագործման օրինակ՝
// Ստեղծել Consumer, որը տպում է տող
Consumer<String> printConsumer = s -> System.out.println(s);
// Օգտագործել Consumer
printConsumer.accept("Բարև, աշխարհ!");
// Օգտագործում stream-ում
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream().forEach(n -> System.out.println(n)); // Lambda-ով Consumer
IntConsumer-ի օգտագործման օրինակ՝
// Ստեղծել IntConsumer, որը տպում է թիվ
IntConsumer printIntConsumer = i -> System.out.println(i);
// Օգտագործել IntConsumer
printIntConsumer.accept(10);
// Օգտագործում primitive-ների stream-ում
IntStream.range(1, 5).forEach(printIntConsumer); // Ավելի արդյունավետ primitive-ների համար
Պրիմիտիվ մասնագիտացումները (DoubleConsumer, IntConsumer, LongConsumer) պետք է նախընտրել իրենց ընդհանուր Consumer<T>-ի փոխարեն՝ աշխատանքի ժամանակ՝ բարելավելու կատարողականությունը՝ խուսափելով բոքսավորում/անբոքսավորում գործողություններից: