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