Notice
코딩항해기
[과제/JAVA] 멘토시리즈 : 자바 - 17 람다식 응용문제 본문
문제 1. 다음 중 람다식에 대한 설명으로 틀린 것은 무엇입니까?
4번이다. 함수형인터페이스 표시 어노테이션은 함수형인터페이스임을 명시하는 역할일 뿐, 어노테이션이 없어도 조건을 만족한다면 람다식을 사용할 수 있다.
문제 2. 다음 중 람다식 표현이 잘못된 것을 고르세요.
람다식을 사용할 때는 매개변수의 타입을 생략한다. 따라서 1번이 잘못되었다.
문제 3. 다음 코드는 컴파일 에러가 발생합니다. 그 이유는 무엇이며, 어떻게 해결해야할까요?
먼저 람다식에서 선언한 적 없는 변수를 반환하고 있는 오류가 있으며,
람다식 내부의 지역변수가 final이거나 사실상 final이어야한다는 조건을 위반했기 때문에 발생한 오류이다.
별도의 지역변수를 선언하여 작성해주면 오류 없이 작동된다.
package home0727;
import java.math.BigDecimal;
import java.math.RoundingMode;
interface Calc {
double round(int point);
}
public class Test01 {
public static void main(String[] args) {
double val = 34.1254886;
Calc cal = (point)->{
double val1 = new BigDecimal(val).setScale(point, RoundingMode.HALF_UP).doubleValue();
return val1;
};
System.out.println("소수점 둘째 자리 반올림 : "+cal.round(2));
}
}
문제 4. 두 수의 크기를 비교하는 프로그램을 만들어 사용하려고 합니다. 해당 기능을 함수형 인터페이스로 선언하고 람다식을 사용해 구현해보세요.
package home0727;
interface Compare {
boolean check(int num1, int num2);
}
public class Test02 {
public static void main(String[] args) {
int num01 = 20;
int num02 = 30;
Compare com = (num1, num2) -> num1 > num2;
if(com.check(num01, num02)) {
System.out.println(num01+"이 더 큽니다.");
}
else {
System.out.println(num02+"이 더 큽니다.");
}
}
}
'problem solving > 문제 풀기' 카테고리의 다른 글
[과제/JAVA] 멘토시리즈 : 자바 - 19 파일 입출력 응용문제 (0) | 2024.07.29 |
---|---|
[과제/JAVA] 멘토시리즈 : 자바 - 18 스레드 응용문제 (0) | 2024.07.28 |
[과제/JAVA] 멘토시리즈 : 자바 - 16 컬렉션 프레임워크 응용문제 (0) | 2024.07.26 |
[과제/JAVA] 멘토시리즈 : 자바 - 15 기본 API 클래스 응용문제 (0) | 2024.07.25 |
[과제/JAVA] 멘토시리즈 : 자바 - 14 예외처리 응용문제 (0) | 2024.07.24 |