
@FunctionalInterface 어노테이션을 사용// 예시
(x, y) -> { 처리 내용 }
참고: 객체를 하나 더 만드는 이유는 main에서 직접 구현 객체를 생성하지 않고,
별도의 객체에서 구현 객체를 받아 람다식을 구현하기 위함이다.
여러 실행문
() -> { 실행문1; 실행문2; }
실행문이 하나일 경우
() -> 실행문
예시
() -> System.out.println("Hello Lambda");
var 사용도 가능하지만 일반적으로는 타입 생략 방식을 사용타입 명시
(타입 매개변수, ...) -> 실행문
(타입 매개변수, ...) -> { 실행문; 실행문; }
var 사용
(var 매개변수, ...) -> 실행문
(var 매개변수, ...) -> { 실행문; 실행문; }
타입 생략
(매개변수, ...) -> 실행문
(매개변수, ...) -> { 실행문; 실행문; }
매개변수가 하나일 경우 괄호 생략 가능
매개변수 -> 실행문
예시
word -> System.out.println(word);
여러 실행문
(매개변수, ...) -> { 실행문; return 값; }
return 문 하나만 있을 경우
(매개변수, ...) -> 값
return 문 하나만 있으면 중괄호와 return 키워드 생략 가능예시
(x, y) -> sum(x, y)
(left, right) -> Math.max(left, right)
Math::max
정적 메소드 참조
클래스 :: 메소드
Computer :: staticMethod
인스턴스 메소드 참조
참조변수 :: 메소드
com :: instanceMethod
(a, b) -> a.instanceMethod(b)
클래스 :: instanceMethod
(a, b) -> { return new 클래스(a, b); }
클래스 :: new