람다 표현식
[Java] 메서드 참조
[Java] 메서드 참조
2023.04.04메서드 참조? 메서드 참조는 람다 표현식을 축약한 형태이다. 메서드 참조를 사용하면 람다 표현식을 더 줄일 수 있는데, 상황에 따라 가독성이 더 좋아보일 수 있다. 다음은 람다 표현식을 메서드 참조로 바꾼 예시이다 inventory.sort((Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight())); inventory.sort(comparing(Apple::getWeight)); 메서드 참조는 실제로 메서드를 호출하는 것이 아니기 때문에 괄호는 적지 않는다. 메서드 참조 형태 메서드 참조는 크게 3가지 형태가 있는데, 한 번 살펴보자. 정적 메서드 참조 예를 들어 Integer의 parseInt 정적 메서드를 다음과 같이 메서드 참조 형태로 바꿀..
[Java] 람다 타입 검사/추론/제약
[Java] 람다 타입 검사/추론/제약
2023.04.04타입 검사 람다가 사용되는 context를 이용해서 람다의 형식(type)을 추론할 수 있다. 어떤 context에서 기대되는 람다 표현식의 형식을 대상 형식(target type)이라고 부른다. 타입 검사 과정 다음 예시를 통해 타입 검사 과정을 확인해보자. filter(inventory, (Apple apple) -> apple.getWeight() > 150); filter 메서드의 선언을 확인한다. filter 메서드는 두 번째 파라미터로 Predicate 형식(target type)을 기대한다. Predicate은 test라는 한 개의 추상 메서드를 정의하는 함수형 인터페이스이다. test 메서드는 Apple을 받아 boolean을 반환하는 함수 디스크립터를 묘사한다. filter 메서드로 전달..
[Java] 함수형 인터페이스
[Java] 함수형 인터페이스
2023.04.03함수형 인터페이스? 함수형 인터페이스는 오직 하나의 추상 메서드를 가지고 있는 인터페이스이다. 함수 디스크립터 함수형 인터페이스의 추상 메서드는 람다 표현식의 시그니처를 묘사한다. 함수형 인터페이스의 추상 메서드 시그니처를 함수 디스크립터라고 한다. 다양한 람다 표현식을 사용하려면 공통의 함수 디스크립터를 기술하는 함수형 인터페이스 집합이 필요하다. 자바 API는 Comparable, Runnable, Callable 등의 다양한 함수형 인터페이스를 포함하고 있다. 여기서 Java 8 라이브러리는 java.util.function 패키지에서 새로운 함수형 인터페이스를 제공하는데, 그 중에서 Predicate, Consumer, Function 인터페이스를 살펴보자. Predicate java.util.f..