Junior
Խոսեք լամբդա արտահայտությունների և հղման մեթոդների մասին Java ծրագրավորման կոնտեքստում և դրանց կիրառության մասին Android զարգացման մեջ.
sobes.tech AI
Պատասխան AI-ից
Լամբդա արտահայտությունները կարճ նշանագրեր են անանուն ֆունկցիաներ ստեղծելու համար: Դրանք թույլ են տալիս փոխանցել ֆունկցիոնալությունը որպես արգումենտ մեթոդին կամ ստեղծել ֆունկցիա առանց նրա անունը նշելու: Սինտաքսը: (պարամետրեր) -> { մարմին }: Օգտագործվում են մեկ աբստրակտ մեթոդ ունեցող ինտերֆեյսների (ֆունկցիոնալ ինտերֆեյսներ) իրականացման համար:
Android-ում կիրառումը:
- իրադարձությունների կառավարիչներ (կլիքներ, հպման իրադարձություններ):
- լսողների ինտերֆեյսների իրականացում (օրինակ,
OnClickListener,OnCompleteListener): - աշխատել API Stream-ի հետ՝ հավաքածուների մշակման համար (ֆիլտրում, փոխակերպում):
// Java 8-ից առաջ
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "Կլիք!", Toast.LENGTH_SHORT).show();
}
});
// Lambda արտահայտությամբ
button.setOnClickListener(v -> {
Toast.makeText(context, "Կլիք!", Toast.LENGTH_SHORT).show();
});
Հղման մեթոդները ավելի կարճ ձև են՝ հղում կատարելու առկա մեթոդներին կամ կոնստրուկտորներին՝ առանց նրանց գործարկելու: Դրանք փոխարինում են միայն մեկ մեթոդ կանչող lambda արտահայտություններին:
Տիպերը՝
- Ստատիկ մեթոդի հղում՝
Կլաս::ստատիկՄեթոդ - Օբյեկտի օրինակային մեթոդի հղում՝
օբյեկտ::մեթոդԱնուն - Տիպի ցանկացած օբյեկտի օրինակային մեթոդի հղում՝
Տիպ::մեթոդԱնուն - Կոնստրուկտորի հղում՝
Կլաս::new
Կիրառումը Android-ում:
- Lambda արտահայտությունների կրճատում՝ լսողների հետ աշխատելիս:
- Stream API-ում՝ մեթոդների կիրառումը տարրերի վրա:
// Lambda
List<String> անուններ = Arrays.asList("Alice", "Bob");
անուններ.forEach անուն -> System.out.println(անուն);
// Մեթոդի հղում
անուններ.forEach(System.out::println);
Առավելությունները՝
- Կոդի ընթերցելիության բարելավում, հատկապես պարզ գործողությունների դեպքում:
- Կոդի ավելի կարճ ձև:
- Stream API-ում օգտագործումը դարձնում է հավաքածուների մշակումը ավելի ֆունկցիոնալ և արդյունավետ: