java lambda 람다표현식
2023. 6. 8. 11:10ㆍ기타
- 람다 표현식: 선언 없이 실행 가능한 함수 → 코드 1줄에 함수를 사용해 호출하는 방식으로 사용함으로써, 간결한 코딩이 가능하다.
- 특징 : ‘일급 객체’ → 다른 객체들에 적용 가능한 연산을 모두 지원하는 객체
- 표현식 : (매개변수) → {실행문}
// (1) 파라미터가 없는 경우 : () 생략이 불가능하다.
() -> expression
// (2) 싱글 파라미터(매개변수)의 경우 : ()를 생략 가능하다.
param -> expression
(param) -> expression
// (3) 2개 이상의 파라키터(매개변수)를 받는 경우 : ()생략이 불가능하다.
(param1, param2) -> expression
// (4-1) 리턴값을 받는 경우 - code line 2줄 이상
(param1, param2) -> { int x = 0;
if(param1 > param2) x = param1 - param2
else x = param2 - param1;
return x;
}
// (4-2) 리턴값을 받는 경우 - code line 1줄(only return관련된 코드줄만 있는 경우)
// -> 'return'과 함께 {} 생략 가능
(param1, param2) -> { return param1 + param2; }
(param1, param2) -> param1 + param2;
- 함수형 인터페이스( @FunctionalInterface ) : 구현해야 할 추상 메소드가 ‘딱 1개’만 정의된 인터페이스
@FuncionalInterface
interface Math{
public int Calc(int x, int y);
}
public static void main(String[] args){
Math plus = (first, second) -> first + second
System.out.println("plus return : " + plus.Calc(1,2)); // 결과 | plus return : 3
Math minus = (first, second) -> first - second
System.out.println("minus return : " + minus.Calc(2,1)); // 결과 | minus return : 1
}
- Java의 Functinal Interface
(1) Consumer : 1개의 param → 0개의 return
<aside> ▫️ Cosumer<T> → void accept(T t);
</aside>
(2) Supplier : 0개의 param → 1개의 return
<aside> ▫️ Supplier<T> → T get();
</aside>
(3) Function : 1개의 param → 1개의 return
<aside> ▫️ Function<T, R> → R apply(T t);
</aside>
- 예시 코드..
public static void main(String args[]){
Member member = new Member();
member.setId(1);
member.setName("길동"); // 원래는 Entity에 바로 set해서 사용하면 안되지만.. 예시를 위해...
// (1) Consumer
Consumer<Member> consumer1 = m -> System.out.println;
Consumer<Member> consumer2 = m -> System.out.println("Consumer = " + m.getName() );
consumer1.accept(member); // 결과 | Member(id=1, name=길동)
consumer2.accept(member); // 결과 | Consumer = 길동
// (2) Supplier
Supplier<Member> supplier = () -> member;
// -> return 생략하지 않으면, 'Supplier<Member> supplier = () -> {return member;};'와 같이 작성 가능하다.
System.out.println("Supplier = " + supplier.get().getName()); // 결과 | Supplier = 길동
// (3) Function
Function<Member, String> function = m -> m.getName();
String memberName = function.apply(member);
System.out.println("Function : " + memberName); // 결과 | Function = 길동
}
'기타' 카테고리의 다른 글
ajax blob 타입 받기 (0) | 2023.09.26 |
---|---|
Optional<T> (0) | 2023.06.08 |
intellj 단축기 정리 (windows) (0) | 2023.04.12 |