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