Sobes.tech
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 коркарди коллексияҳоро бештар функсионалӣ ва самаранок мекунад.