Junior
Дар бораи ифодаҳои lambda ва усулҳои истинод дар контексти барномасозии 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();
}
});
// Бо истифода аз ифодаи ламбда
button.setOnClickListener(v -> {
Toast.makeText(context, "Клк!", Toast.LENGTH_SHORT).show();
});
Модҳои истинод — роҳи кӯтоҳтар барои ишора кардан ба методҳо ё конструкторҳои мавҷуда, бе иҷрои онҳо. Онҳо барои иваз кардани ифодаҳои ламбда, ки танҳо як методро даъват мекунанд, истифода мешаванд.
Намудҳои модҳои истинод:
- Ишора ба методи статикӣ:
Класс::номиСтатикӣМод - Ишора ба методи намунаи объект:
объект::номиМод - Ишора ба методи намунаи ҳар кадом объекти навъи муайян:
Намуд::номиМод - Ишора ба конструктор:
Класс::new
Барои истифода дар Android:
- кӯтоҳ кардани ифодаҳои ламбда дар кор бо гӯшкунандагон.
- Дар API-и Stream барои татбиқи методҳо ба унсурҳои ҷараён.
// Ламбда
List<String> номҳо = Arrays.asList("Alice", "Bob");
номҳо.forEach(ном -> System.out.println(ном));
// Модҳои истинод
номҳо.forEach(System.out::println);
Фоидаҳо:
- Беҳтар кардани хонданпазирии коди, махсусан дар ҳолатҳои содда.
- Коди кӯтоҳтар.
- Истифода дар API-и Stream коркарди коллексияҳоро бештар функсионалӣ ва самаранок мекунад.