Java의 람다 표현식

이번 주에 우리는 내가 우연히 만났지만 최근까지 정말로 이해하지 못했던 람다 식에 대해 알아볼 것입니다! 람다 표현식은 자바가 기능적 프로그래밍에 발을 담그고 있는 것입니다. 매개변수를 가져와 표현식이나 코드 블록에 적용합니다. 다음은 구문의 기본 예입니다.

(parameter1, parameter2) => expression


또는

(parameter1, parameter2) => {code block}


람다 표현식은 매우 제한적이며 void가 아닌 경우 즉시 값을 반환해야 합니다. 단순함을 유지하기 위해 if 또는 for와 같은 키워드를 사용할 수 없습니다. 더 많은 코드 줄이 필요한 경우 대신 코드 블록을 사용할 수 있습니다.

이제 람다를 구현할 때 표현식만 사용할 수 없습니다. 람다는 기능적 인터페이스의 구현입니다. 함수형 인터페이스는 추상 메서드가 하나만 있는 인터페이스입니다. 람다의 장점은 인터페이스의 클래스를 구현하고 개체를 인스턴스화하지 않고도 메서드를 구현할 수 있다는 것입니다. 이에 대한 예는 다음과 같습니다.

interface FuncInterface
{
    // An abstract function
    void abstractFun(int x);

    // A non-abstract (or default) function
    default void normalFun()
    {
       System.out.println("Hello");
    }
}

class Test
{
    public static void main(String args[])
    {
        // lambda expression to implement above
        // functional interface. This interface
        // by default implements abstractFun()
        FuncInterface fobj = (int x)->System.out.println(2*x);

        // This calls above lambda expression and prints 10.
        fobj.abstractFun(5);
    }
}


람다 표현식은 종종 함수에 대한 매개변수로 사용됩니다. 가독성을 높이기 위해 유형이 하나의 메서드, 동일한 수의 매개 변수 및 동일한 반환 유형만 있는 인터페이스인 한 변수에 람다 식을 저장할 수도 있습니다.

import java.util.ArrayList;
import java.util.function.Consumer;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    Consumer<Integer> method = (n) -> { System.out.println(n); };
    numbers.forEach( method );
  }
}


람다의 일반적인 용도는 스레드를 만드는 것입니다. 다음은 스레드가 실행할 람다 코드 블록을 사용하여 Runnable 개체를 구현하는 예입니다.

// Lambda Runnable
Runnable task2 = () -> { System.out.println("Task #2 is running"); };

// start the thread
new Thread(task2).start();


초보자인 우리 대부분은 OOP 개념을 사용하여 프로그래밍하는 방법을 배웠기 때문에 함수형 프로그래밍과 같은 다른 패러다임을 사용하는 것이 다소 어색할 수 있습니다. 나 자신도 여전히 이러한 개념을 중심으로 머리를 감싸는 법을 배우고 있습니다. 어쨌든 오늘은 여러분 모두가 무언가를 배울 수 있기를 바랍니다. 더 많은 질문이 있거나 이 주제에 대해 자세히 알아보려면 이 게시물을 작성하는 데 사용한 아래 링크를 확인하세요. 내가 가져온 코드 예제도 거기에서 가져온 것입니다. 좋은 한 주 되세요!

자원:
  • https://www.w3schools.com/java/java_lambda.asp
  • https://www.codejava.net/java-core/the-java-language/java-8-lambda-runnable-example
  • https://www.geeksforgeeks.org/lambda-expressions-java-8/
  • https://www.developer.com/microsoft/start-using-java-lambda-expressions/
  • 좋은 웹페이지 즐겨찾기