반응형
import java.util.function.BiFunction;
// 람다로 바꾼 사칙연산을 표현하는 enum
enum Expression {
ADD((x, y) -> x + y),
SUBTRACT((x, y) -> x - y),
MULTIPLY((x, y) -> x * y),
DIVIDE((x, y) -> {
if (y != 0) {
return x / y;
} else {
throw new ArithmeticException("Division by zero");
}
});
private final BiFunction<Integer, Integer, Integer> operation;
Expression(BiFunction<Integer, Integer, Integer> operation) {
this.operation = operation;
}
int apply(int x, int y) {
return operation.apply(x, y);
}
}
public class Main {
public static void main(String[] args) {
// 람다로 바꾼 사칙연산을 사용하여 연산 수행
int result = Expression.ADD.apply(5, 3);
System.out.println("덧셈 결과: " + result);
result = Expression.SUBTRACT.apply(5, 3);
System.out.println("뺄셈 결과: " + result);
result = Expression.MULTIPLY.apply(5, 3);
System.out.println("곱셈 결과: " + result);
result = Expression.DIVIDE.apply(6, 3);
System.out.println("나눗셈 결과: " + result);
}
}
- enum은 열거형이라고 불리며, 서로 연관된 상수들의 집합을 의미합니다.
- 장점
- 코드가 단순해지며, 가독성이 좋습니다. (if, else if 제거됨)
- 인스턴스 생성과 상속을 방지하여 상수값의 타입안정성이 보장됩니다.
- enum class를 사용해 새로운 상수들의 타입을 정의함으로 정의한 타입이외의 타입을 가진 데이터값을 컴파일시 체크합니다.
- 키워드 enum을 사용하기 때문에 구현의 의도가 열거임을 분명하게 알 수 있습니다.
- 객체지향적으로 설계할 수 있습니다.
- BiFunction type ->
문법이 생소하다- 함수형 인터페이스
- ex) BiFunction<integer, integer, integer> expression;
- 앞의 두 개 integer 는 파라미터
- 마지막의 integer 는 return type
java 를 공부하면서, enum 을 들어보긴 했지만 공부해본건 처음이다.
학습하고 보니 객체지향 프로그래밍에 있어서 큰 도움을 주는 녀석이라서 숙지하고 있는 것이 좋겠다.
+ 코드를 확 줄여주는 람다표현식도 숙지하기!
반응형
'백엔드 데브코스' 카테고리의 다른 글
[Java] Optional - nullPointException을 잘 다뤄보자 (0) | 2023.09.25 |
---|---|
[Java] Object 클래스와 주요 메서드 - equals(), hashCode(), toString() (0) | 2023.09.22 |
[Java] Checked & Unchecked exception 의 차이 (0) | 2023.09.22 |
[Java] 추상클래스(abstract class)와 인터페이스(interface) (0) | 2023.09.22 |
[Java] 객체지향 프로그래밍으로 개발해야하는 이유 / 클래스와 상속 (0) | 2023.09.22 |