반응형
Java 8의 함수형 인터페이스와 메소드 레퍼런스 사용법
Java 8에서는 함수형 프로그래밍 패러다임을 지원하기 위해 함수형 인터페이스와 메소드 레퍼런스를 도입했습니다. 이 글에서는 함수형 인터페이스와 메소드 레퍼런스를 이해하고 활용하는 방법에 대해 알아봅니다.
함수형 인터페이스
함수형 인터페이스는 오직 하나의 추상 메소드를 갖는 인터페이스입니다. 이를 통해 람다 표현식으로 간결하게 표현할 수 있습니다. 함수형 인터페이스는 @FunctionalInterface 어노테이션으로 표시할 수 있으며, 컴파일러가 이를 검사해줍니다.
예제:
@FunctionalInterface
public interface MyFunction {
int apply(int a, int b);
}
기본 함수형 인터페이스
Java 8에서는 자주 사용되는 함수형 인터페이스를 제공합니다. 이들은 java.util.function 패키지에 포함되어 있습니다.
- Predicate
: T 타입의 객체를 받아 boolean 값을 반환하는 test() 메소드를 가집니다. - Consumer
: T 타입의 객체를 받아 처리하는 accept() 메소드를 가집니다. - Function<T, R>: T 타입의 객체를 받아 R 타입의 객체를 반환하는 apply() 메소드를 가집니다.
- Supplier
: 객체를 받지 않고 T 타입의 객체를 반환하는 get() 메소드를 가집니다.
메소드 레퍼런스
메소드 레퍼런스는 람다 표현식을 더 간결하게 표현할 수 있는 방법입니다. 이를 사용하면 이미 정의된 메소드를 직접 참조하여 함수형 인터페이스의 구현을 대체할 수 있습니다. 메소드 레퍼런스는 다음과 같은 형태로 사용할 수 있습니다.
- 정적 메소드 레퍼런스: ClassName::methodName 형태로 사용합니다.
- 인스턴스 메소드 레퍼런스: instance::methodName 형태로 사용합니다.
- 생성자 레퍼런스: ClassName::new 형태로 사용합니다.
예제:
public class MethodReferenceExample {
public static int multiply(int a, int b) {
return a * b;
}
public static void main(String[] args) {
// 정적 메소드 레퍼런스
MyFunction multiplyFunction = MethodReferenceExample::multiply;
int result = multiplyFunction.apply(3, 5);
System.out.println("3 * 5 = " + result);
// 인스턴스 메소드 레퍼런스
MethodReferenceExample instance = new MethodReferenceExample();
MyFunction instanceMultiplyFunction = instance::multiplyInstanceMethod;
result = instanceMultiplyFunction.apply(4, 6);
System.out.println("4 * 6 = " + result);
// 생성자 레퍼런스
MyFunctionConstructor constructorReference = MyClass::new;
MyClass myClass = constructorReference.create(7);
System.out.println("MyClass instance value: " + myClass.getValue());
}
public int multiplyInstanceMethod(int a, int b) {
return a * b;
}
@FunctionalInterface
interface MyFunctionConstructor {
MyClass create(int value);
}
static class MyClass {
private int value;
public MyClass(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
}
이 예제에서는 정적 메소드 레퍼런스, 인스턴스 메소드 레퍼런스, 생성자 레퍼런스를 사용하여 각각의 메소드와 생성자를 참조하는 방법을 보여줍니다. 이를 통해 코드를 더 간결하게 표현하고 가독성을 높일 수 있습니다.
함수형 인터페이스와 메소드 레퍼런스를 이해하고 활용하면, Java에서 함수형 프로그래밍 패러다임을 효과적으로 사용할 수 있습니다. 이를 통해 코드의 간결성과 가독성을 높일 수 있으며, 개발자들의 생산성 향상에 도움이 됩니다.
반응형
'자기개발 > 검색한 자료 정리' 카테고리의 다른 글
React에서 최적화된 렌더링 성능을 위한 기법 (0) | 2023.04.21 |
---|---|
CSS 네이밍 규칙 비교: BEM, SMACSS, OOCSS (1) | 2023.04.21 |
React Hooks를 사용한 함수형 컴포넌트 개발 방법 (0) | 2023.04.20 |
Java와 JavaScript의 차이점과 각각의 장단점 비교 (0) | 2023.04.20 |
Git에서 브랜치, 병합, 충돌 해결하기 (0) | 2023.04.20 |