람다식

msung99·2022년 2월 15일
0


람다식

인터페이스 활용방식

  • 기존의 인터페이스 활용법 : 클래스로 구현해서 활용

인터페이스의 메소드를 클래스에서 구현 후 인터페이스 타입의 변수에 할당해 사용하는 방식이었다.

  • 람다식의 인터페이스 활용법 : 바로 구현해서 활용

바로 람다식으로 인터페이스의 메소드를 구현해서 그것을 인터페이스 변수에 할당해 이용하는 방식이다.


예제

인터페이스 LambdaInterface1

public interface LambdaInterface1 {
  public void method(String s1, String s2, String s3);
}

위에 정의된 인터페이스 안의 메소드를 클래스에서 일일이 재정의해서 구현하는 것이 아닌,

인터페이스에 선언된 메소드를 람다식으로 바로 재정의해서 구현하면 된다.

// main 함수
// 람다식으로 매개변수 3개를 던지는 부분만 구채화 시킴

LambdaInterface1 li1 = (String s1, String s2, String s3) -> {System.out.println(s1 + " " + s2 + " " + s3); };

li1.method("Hello", "java", "world");

람다식 형식

  • 람다식 형식

(매개변수목록) -> { 함수몸체 }

또, 람다식을 사용할 때는 람다식을 저장하기 위한 참조 변수의 타입을 결정해야 한다. 그 형식은 아래와 같다.

  • 람다식을 인터페이스 변수에 할당하는 형식

인터페이스타입 인터페이스변수 = (매개변수목록) -> { 함수몸체 } ;


람다식 특징

1번 예제

매개변수가 1개이거나 타입이 같을 때, 타입을 생략할 수 있다.

public interface LambdaInerface2{
  public void method(String s1);
}
LambdaInterface2 li2 = (s1) -> {System.out.println(s1); };
li2.method("hello");

2번 예제

실행문이 1개일 때, { } 를 생략할 수 있다.

LambdaInterface2 li3 = (s1) -> System.out.println(s1);
li3.method("hello");

3번 예제

매개변수와 실행문이 1개일때, { } 와 ( ) 를 생략할 수 있다.

LambdaInterface2 li4 = s1 -> System.out.println(s1);
li4.method("Hello");

4번 예제

매개변수가 없을 때, ( ) 만 작성한다.

public interface LambdaInterface3{
  public void method();
}
LambdaInterface li5 = () -> System.out.println("no paramenter");
li5.method();

5번 예제

반환형이 있는 경우

  • 변수는 무언가를 담고 있는 것이다.
    따라서 아래처럼 변수에 담고있는 함수 (람다식) 도 변경 시킬 수 있다.
public interface LambdaInterface4{
  public int method(int x, int y);
}
// 반환형이 있는 형태로 구현
LambdaInterface4 li6 = (x,y) -> {
  int result = x + y;
  return result;
};

System.out.println("li6.method(10,20): %d\n", li6.method(10,20)); // 30

// 변수에 담고있는 함수 변경
li6 = (x,y) -> {
  int result = x * y;
  return result;
};

System.out.println("li6.method(10,20): %d\n", li6.method(10,20)); // 200

// 변수에 담고있는 함수 변경
li6 = (x,y) -> {
  int result = x - y;
  return result;
}

System.out.println("li6.method(10,20): %d\n", li6.method(10,20)); // -10
profile
블로그 이전했습니다 🙂 : https://haon.blog

0개의 댓글