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 개념을 사용하여 프로그래밍하는 방법을 배웠기 때문에 함수형 프로그래밍과 같은 다른 패러다임을 사용하는 것이 다소 어색할 수 있습니다. 나 자신도 여전히 이러한 개념을 중심으로 머리를 감싸는 법을 배우고 있습니다. 어쨌든 오늘은 여러분 모두가 무언가를 배울 수 있기를 바랍니다. 더 많은 질문이 있거나 이 주제에 대해 자세히 알아보려면 이 게시물을 작성하는 데 사용한 아래 링크를 확인하세요. 내가 가져온 코드 예제도 거기에서 가져온 것입니다. 좋은 한 주 되세요!
자원:
Reference
이 문제에 관하여(Java의 람다 표현식), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jryther/lambda-expressions-in-java-5gme텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)