JAVA · 람다/메서드
UnaryOperator와 특화 함수형 인터페이스
UnaryOperator, IntFunction 등 특화 인터페이스로 오토박싱을 피합니다.
람다/메서드중급UnaryOperatorIntFunction특화인터페이스오토박싱
핵심 설명
UnaryOperator, IntFunction 등 특화 인터페이스로 오토박싱을 피합니다.
Java code
import java.util.*;
import java.util.function.*;
public class SpecializedFunctions {
public static void main(String[] args) {
// UnaryOperator<T> — 같은 타입 변환
UnaryOperator<String> exclaim = s -> s + "!";
System.out.println(exclaim.apply("Hello")); // Hello!
// List.replaceAll에서 활용
List<String> words = new ArrayList<>(
List.of("hello", "world"));
words.replaceAll(String::toUpperCase);
System.out.println(words); // [HELLO, WORLD]
// 원시 타입 특화 — 오토박싱 방지
IntUnaryOperator doubleIt = n -> n * 2;
IntPredicate isEven = n -> n % 2 == 0;
IntConsumer printInt = System.out::println;
IntSupplier randomInt = () -> (int)(Math.random() * 100);
// IntStream과 함께
java.util.stream.IntStream.range(1, 6)
.map(doubleIt)
.filter(isEven)
.forEach(printInt);
// ToIntFunction — 객체를 int로 변환
ToIntFunction<String> strLen = String::length;
System.out.println(strLen.applyAsInt("Java")); // 4
}
}학습 팁
원시 타입 스트림(IntStream 등)에서는 반드시 원시 타입 특화 함수형 인터페이스를 사용하세요. 오토박싱 비용을 제거합니다.
주의할 점
Function<Integer, Integer> 대신 IntUnaryOperator를 써야 오토박싱이 발생하지 않습니다.
자주 묻는 질문
UnaryOperator와 특화 함수형 인터페이스란 무엇인가요?
UnaryOperator , IntFunction 등 특화 인터페이스로 오토박싱을 피합니다.
UnaryOperator와 특화 함수형 인터페이스 학습 시 주의할 점은 무엇인가요?
Function<Integer, Integer> 대신 IntUnaryOperator 를 써야 오토박싱이 발생하지 않습니다.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.