Java 17일차 3(람다)
2022. 12. 2. 11:03ㆍ코딩배움일지/JAVA
public class CalcMain {
public static void main(String[] args) { /*람다.*/
Calculator c1 = (x,y) -> x+y;
int r1 = c1.calc(10,20);
System.out.println(r1);
Calculator c2 = new Addition(); /*1회용이니까 클래스를 새로 만들어야 한다.*/ /*이거는 비교용 클래스 생성*/
int r2 = c2.calc(20, 30);
System.out.println(r2);
}
}
인터페이스
package j19_익명클래스;
@FunctionalInterface /*람다에 쓰이는 인터페이스에서는 무조건 달려 있는 것*/
public interface Calculator {
public int calc(int a, int b);
}
람다 해체
public class CalcMain {
public static void main(String[] args) { /*람다.*/ /*무조건 인터페이스다 다른거 하지 말자. */
//Calculator c1 = (x,y) -> x+y; /*람다*/
Calculator c = new Calculator() {
@Override
public int calc(int x, int y) { /*자료형 메소드명만 안바꾸면 된다.*/
return x+y;
}
};
// Calculator c1 = (int x, int y) -> { /* 생락하고 화살표로*/ /*생성과 동시에 대입*/ /*대상이 있어야 한다 여기서는 Calculator */
// return x+y;
// }; /*람다 해체*/ /*정의되어지고 생성한다*/ /*정의 밖에 없다.*/
// Calculator c1 = (x, y) -> 인터페이스 안에 정해져 있기 때문에 자료형 int 생략
// x+y; 다른 실행문이 없는경우 실행문이 바로 리턴할 경우 중괄호 생략 리턴 생략 (x, y) -> x+y; 무조건 int 로 리턴이 되어야 한다.
Calculator c1 = ( x, y) -> { /*인터페이스 안에 추상메소드 하나만 있어야 한다.*/ /*메소드가 2개면 오류*/
System.out.println("2");
System.out.println("2");
System.out.println("2");
System.out.println("2");
System.out.println("2");
return x+y;
};
int r1 = c1.calc(10,20);
System.out.println(r1);
Calculator c2 = new Addition(); /*1회용이니까 클래스를 새로 만들어야 한다.*/ /*이거는 비교용 클래스 생성*/
int r2 = c2.calc(20, 30);
System.out.println(r2);
}
}
1) 기본 함수형 인터페이스 (파라미터가 없거나 하나임)
함수형 인터페이스 | 메서드 | 매개변수 | 반환값 |
java.lang.Runnable | void run() /*쓰레드?*/ | X | X |
Supplier<T> | T get() | X | O |
Consumer<T> | void accept(T t) /*받아서 소비*/ | O | X |
Function<T, R> | R apply(T t) /*제네릭있다.*/ | O | O |
Predicate<T> | boolean test(T t) /*제네릭있다.*/ | O | O |
2) 파라미터가 두개인 함수형 인터페이스
함수형 인터페이스 | 메서드 | 매개변수 | 반환값 |
BiConsumer<T, U> 매개변수 있는거 | void accept(T t, U u) | O | O |
BiFunction<T, U, R> | R apply(T t, U u) | O | O |
BiPredicate<T, U> | boolean test(T t, U u) | O | O |
3) 파라미터 타입이 반환타입과 일치하는 인터페이스
함수형 인터페이스 | 메서드 | 매개변수 | 반환값 |
UnaryOperator<T> 인풋 아웃풋 자료형 동일 | T apply(T t) | O | O |
BinaryOperator<T> | T apply(T t, T t) | O | O |
'코딩배움일지 > JAVA' 카테고리의 다른 글
Java 17일차 4-1(람다) (0) | 2022.12.02 |
---|---|
Java 17일차 4(람다) (0) | 2022.12.02 |
Java 17일차 2(익명클래스) (0) | 2022.12.02 |
Java 17일차 1(예외 미루기) (0) | 2022.12.02 |
Java 16일차 4(예외처리) (0) | 2022.12.01 |