Java 8-Lambda 표현식
Lambda 표현식은 Java 8에 도입되었으며 Java 8의 가장 큰 기능으로 선전됩니다. Lambda 표현식은 함수형 프로그래밍을 용이하게하고 개발을 많이 단순화합니다.
통사론
람다 식의 특징은 다음과 같습니다.
parameter -> expression body
다음은 람다 식의 중요한 특성입니다.
Optional type declaration− 매개 변수 유형을 선언 할 필요가 없습니다. 컴파일러는 매개 변수의 값에서 동일하게 추론 할 수 있습니다.
Optional parenthesis around parameter− 괄호 안에 단일 매개 변수를 선언 할 필요가 없습니다. 매개 변수가 여러 개인 경우 괄호가 필요합니다.
Optional curly braces − 본문에 단일 문이 포함 된 경우 식 본문에 중괄호를 사용할 필요가 없습니다.
Optional return keyword− 컴파일러는 본문에 값을 반환하는 단일 표현식이있는 경우 자동으로 값을 반환합니다. 식이 값을 반환 함을 나타내려면 중괄호가 필요합니다.
람다 식 예제
C : \> JAVA에서 원하는 편집기를 사용하여 다음 Java 프로그램을 만듭니다.
Java8Tester.java
public class Java8Tester {
public static void main(String args[]) {
Java8Tester tester = new Java8Tester();
//with type declaration
MathOperation addition = (int a, int b) -> a + b;
//with out type declaration
MathOperation subtraction = (a, b) -> a - b;
//with return statement along with curly braces
MathOperation multiplication = (int a, int b) -> { return a * b; };
//without return statement and without curly braces
MathOperation division = (int a, int b) -> a / b;
System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
System.out.println("10 - 5 = " + tester.operate(10, 5, subtraction));
System.out.println("10 x 5 = " + tester.operate(10, 5, multiplication));
System.out.println("10 / 5 = " + tester.operate(10, 5, division));
//without parenthesis
GreetingService greetService1 = message ->
System.out.println("Hello " + message);
//with parenthesis
GreetingService greetService2 = (message) ->
System.out.println("Hello " + message);
greetService1.sayMessage("Mahesh");
greetService2.sayMessage("Suresh");
}
interface MathOperation {
int operation(int a, int b);
}
interface GreetingService {
void sayMessage(String message);
}
private int operate(int a, int b, MathOperation mathOperation) {
return mathOperation.operation(a, b);
}
}
결과 확인
다음을 사용하여 클래스 컴파일 javac 다음과 같이 컴파일러-
C:\JAVA>javac Java8Tester.java
이제 다음과 같이 Java8Tester를 실행하십시오.
C:\JAVA>java Java8Tester
다음 출력을 생성해야합니다.
10 + 5 = 15
10 - 5 = 5
10 x 5 = 50
10 / 5 = 2
Hello Mahesh
Hello Suresh
다음은 위의 예에서 고려해야 할 중요한 사항입니다.
Lambda 표현식은 주로 기능 인터페이스의 인라인 구현, 즉 단일 메서드 만있는 인터페이스를 정의하는 데 사용됩니다. 위의 예에서는 MathOperation 인터페이스의 연산 방법을 정의하기 위해 다양한 유형의 람다 식을 사용했습니다. 그런 다음 GreetingService의 sayMessage 구현을 정의했습니다.
Lambda 표현식은 익명 클래스의 필요성을 제거하고 Java에 매우 간단하면서도 강력한 기능적 프로그래밍 기능을 제공합니다.
범위
람다 식을 사용하면 최종 변수 또는 효과적으로 최종 변수 (한 번만 할당 됨)를 참조 할 수 있습니다. 변수에 두 번째로 값이 할당되면 Lambda 표현식에서 컴파일 오류가 발생합니다.
범위 예
C : \> JAVA에서 원하는 편집기를 사용하여 다음 Java 프로그램을 만듭니다.
Java8Tester.java
public class Java8Tester {
final static String salutation = "Hello! ";
public static void main(String args[]) {
GreetingService greetService1 = message ->
System.out.println(salutation + message);
greetService1.sayMessage("Mahesh");
}
interface GreetingService {
void sayMessage(String message);
}
}
결과 확인
다음을 사용하여 클래스 컴파일 javac 다음과 같이 컴파일러-
C:\JAVA>javac Java8Tester.java
이제 다음과 같이 Java8Tester를 실행하십시오.
C:\JAVA>java Java8Tester
다음 출력을 생성해야합니다.
Hello! Mahesh