람다식

Byeonghyeon Kim·2021년 6월 24일
0

자바

목록 보기
19/20
post-thumbnail

람다식

  • 함수 지향 프로그래밍 방법

람다식이란?

  • 익명 함수를 이용해서 익명 객체를 생성하기 위한 식
  • 기존 방법
    • 인터페이스 구현
    • 인터페이스 타입 변수에 할당함
  • 람다식 방법
    • 람다식을 통해 인터페이스에 있는 메서드를 바로 구현해서 사용
  • 람다식에서 변수는 함수를 담고 있다고 보면 됨
  • 자바스크립트 화살표함수 같은 느낌인듯?

람다식 구현

  • 인터페이스에서 선언만 되어있는 메서드를 사용한다
    • 전달할 매개변수
    • 해야할 일
    • 이 두개를 람다식을 활용해서 정의한 후 변수에 담아서
    • 변수명.메서드명(매개변수)로 사용
// interface

package Interface;

public interface interfaceClass {
	
	public void method(String s1, String s2, String s3);
	
}
// main

package Interface;

public class main {

	public static void main(String[] args) {
		
		// 매개변수와 실행문만으로 작성 (접근자, 반환형, return 생략)
		interfaceClass li1 = (String s1, String s2, String s3) -> { System.out.println(s1 + " " + s2 + " " + s3); };
		li1.method("hello", "java", "world");
		
	}

}
/*
결과
hello java world
*/
  • 매개변수가 1개이거나 타입이 같을 때 타입을 생략할 수 있음
// interface

package Interface;

public interface interfaceClass {
	
	public void method(String s1);
	
}
// main

package Interface;

public class main {

	public static void main(String[] args) {
		
		// 매개변수가 1개이거나 타입이 같을 경우 타입 생략
		interfaceClass li1 = (s1) -> { System.out.println(s1); };
		li1.method("hello");
		
	}

}
/*
결과
hello
*/
  • 실행문이 1개일 때 {} 생략 가능
// main

package Interface;

public class main {

	public static void main(String[] args) {
		
		// 실행문이 하나라 중괄호 생략 가능
		interfaceClass li1 = (s1) -> System.out.println(s1);
		li1.method("hello");
		
	}

}
/*
결과
hello
*/
  • 매개변수와 실행문이 1개일 때 (){} 생략 가능
// main

package Interface;

public class main {

	public static void main(String[] args) {
		
		// 매개변수가 하나라 () 생략, 실행문이 하나라 {} 생략
		interfaceClass li1 = s1 -> System.out.println(s1);
		li1.method("hello");
		
	}

}
/*
결과
hello
*/
  • 매개변수가 없을때 ()만 작성
// interface

package Interface;

public interface interfaceClass {
	
	public void method();
	
}
// main

package Interface;

public class main {

	public static void main(String[] args) {
		
		// 매개변수 없을 때 ()만 작성
		interfaceClass li1 = () -> System.out.println("no parameter");
		li1.method();
		
	}

}
/*
결과
no parameter
*/
  • 반환값이 있는 경우
// interface

package Interface;

public interface interfaceClass {
	
	public int method(int x, int y);
	
}
// main

package Interface;

public class main {

	public static void main(String[] args) {
		
		// 데이터 타입이 같아서 데이터 타입 생략
        // 실행문이 두개라 중괄호 사용
		interfaceClass li1 = (x, y) -> {
            int result = x + y;
            return result;
        };
		System.out.printf("li1.method(10, 20) = %d\n", li1.method(10, 20));
		
	}

}
/*
결과
hello
*/
profile
자기 주도 개발전 (개발, 발전)

0개의 댓글

관련 채용 정보