함수형 프로그래밍 , 람다식

2023. 11. 5. 23:28java

기존 익명 함수는 너무 번거로우니 함수형 인터페이스를 정의하고 해당 인터페이스를 계승하는 람다식들은 인터페이스에서 정의한

매개변수와 반환형을 사용한다고 생각하자!!

 

함수형 인터페이스는 추상 메소드가 1개인 인터페이스이다. 2개이면 람다식에서 사용하는 변수의 매개변수와 반환 자료형이 무엇인지

특정하기가 매우 어렵기 때문이다.

 

Supplier<T>

매개변수가 없고 T 타입으로 반환한다.

Consumer<T>

T 타입 매개변수를 받고 아무것도 반환하지 않는다.

Function<T,R>

T 타입을 매개변수로 받아서 R타입을 반환한다.

Predicate<T>

T 타입을 매개변수로 받아서 boolean을 반환한다.

Runnable

매개변수도 없고 반환도 없다.

BiConsumer<T,U>

T타입과 R타입을 매개변수로 받아서 boolean을 반환한다.

 

간단한 람다식 문법 소개

() -> {}
// 한줄일 경우 {} 생략가능(권장하진 않음).return 으로만 구성되어있는 경우 return 생략가능
() -> 1 
// 해당 식으로 치환 가능
() -> { return 1; }

// 함수형 인터페이스에 따라 자료형 생략 가능
(int x) -> x+1
(x) -> x+1
x -> x+1
(int x) -> { return x+1; }
x -> { return x+1; }
(x) -> {x+1}

(int x, int y) -> x+y
(x, y) -> x+y
(x, y) -> { return x+y; }

//선언된 type과 선언되지 않은 type을 같이 사용 할 수 없다.
(x, int y) -> x+y
(x, final y) -> x+y

 

 

'java' 카테고리의 다른 글

객체 지향 5원칙 SOLID  (0) 2023.11.07
stream 문법  (0) 2023.11.05
자바 Arrays.asList  (0) 2023.11.05
자바 String Literal, String Object? immutable?  (0) 2023.11.05
자바 심화 체크리스트  (0) 2023.11.05