람다식 해보죠
함수형 인터페이스는 추상 메소드를 하나만 갖는다
인터페이스에 @FunctionalInterface 어노테이션을 붙이면 그 인터페이스는 함수형 인터페이스가 되어 무조건 추상메소드를 하나만 가져야한다.
인터페이스 생성
//인터페이스
@FunctionalInterface // 있어도 없어도 됨 아래 인터페이스는 함수형이라는 걸 알려주는 표시
public interface MyInterface {
int calc(int a, int b);
//void a(); 놉! 이거안돼! 추상메소드 하나만 가능해!
인터페이스를 상속받은 클래스 생성
public class MyInterfaceImpl implements MyInterface{
// + 기능 하나만 정의 가능
@Override
public int calc(int a, int b) {
return a+b ;
}
}
메소드구현
public class MyCalculator {
// 인자에 람다식(익명함수)을 받는 메소드
static void paramMethod(MyInterface lambda,int a, int b){
System.out.println(lambda.calc(a, b));
}
//람다식을 반환하는 메소드
static MyInterface returnMethod(int z){
return(x,y) -> x*y+z;
}
public static void main(String[] args) {
//방법1. 인터페이스를 구현 한 클래스 사용:더하기만 가능, 재사용도 가능(MyInterfaceImpl타입 객체 또 생성가능)
System.out.println("[인터페이스를 구현한 클래스 사용:더하기만 가능]");
MyInterface my1 = new MyInterfacelmpl();
System.out.println(my1.calc(10, 5));
//방법2. 익명 클래스로 구현, 즉 별도의 클래스 필요x 코드 간결, 재사용은 불가
System.out.println("[익명 클래스 사용:다른 연산 가능]");
MyInterface my2 = new MyIntrerface(){
@Override
public int calc(int a, int b) {
return a+b;
}
};
System.out.println(my2.calc(10, 5));
my2 = new MyInterface() {
@Override
public int calc(int a, int b) {
return a-b;
}
};
System.out.println(my2.calc(10, 5));
//방법3. 람다식 사용.클래스 불필요.방법2 보다 코드 더 간결. 단, 재사용은 불가. 추상 메소드 하나로 다양한 기능 구현.
System.out.println("람다식 사용: 다른 연산 가능");
//※람다식은 MyInterface의 추상메소드 형태여야한다
MyInterface lambda = (a,b) -> a+b;
System.out.println(lambda.calc(10,5));
lambda = (a,b) -> a-b;
System.out.println(lambda.calc(10,5));
lambda = (a,b) -> a*b;
System.out.println(lambda.calc(10,5));
lambda = (a,b) -> a/b;
System.out.println(lambda.calc(10,5));
//람다식(익명함수)을 메소드의 인자로 전달
lambda = (a.b) -> a%b;
paramMethod(lambda,10,3);
// paramMethod( (a,b) -> a%b ,10,3); 굳이 변수에 안담고 요렇게도 당연 가능!!
//람다식을 반환하는 메소드
System.out.println(returnMethod(10).calc(10,5));
}///m
}//////c
'학원 > JDBC' 카테고리의 다른 글
10/26 29-1 Stream의 주요 메소드 (0) | 2022.10.26 |
---|---|
10/25 28-8 Stream (0) | 2022.10.25 |
10/25 28-6 람다식 과 Stream 이론 정리 (1) | 2022.10.25 |
10/25 28-5 Generic 코딩으로 알아보기 (0) | 2022.10.25 |
10/25 28-4 제너릭(Generic) 이론정리 (0) | 2022.10.25 |