Open hyunsoo10 opened 3 months ago
이번에도 제목이 이상한 현수오빠,,
제목 양식 준수해주세요
이번에도 제목이 이상한 현수오빠,,
시정했습니다
제목 양식 준수해주세요
네네 그래야지요~ 알겠습니다요~
IntFunction<int[]> arrayCreator = int[]::new;
int[] newArray = arrayCreator.apply(5);
import java.util.function.Supplier;
public class Main {
public static void main(String[] args) {
Supplier<int[]> arraySupplier = int[]::new;
int[] array = arraySupplier.get();
// 배열 초기화
for (int i = 0; i < array.length; i++) {
array[i] = i + 1;
}
// 배열 출력
for (int num : array) {
System.out.println(num);
}
}
}
Chapter : 7. 람다와 스트림
Item : 43. 람다보다는 메서드 참조를 사용하라
Assignee : hyunsoo10
🍑 서론
람다가 익명 클래스보다 나은 점 중에서 가장 큰 특징은 간결함이다. 하지만 이보다 더 간결하게 만들 수 있는 방법이 바로 메서드 참조다.
🍑 본론
🔸람다
깔끔해 보이지만, 매개변수 count, incr는 크게 하는 일 없이 공간을 차지한다. 자바 8이 되면서 Integer 클래스는 정적 메서드 sum을 제공한다.
🔹메서드 참조
람다로 할 수 없는 일이라면 메서드 참조로도 할 수 없다.
메서드 참조를 사용하는 편이 보통은 더 짧고 간결하므로, 람다로 구현했을 때 너무 길거나 복잡하면 메서드 참조가 좋은 대안이되어준다.
IDE들은 람다를 메서드 참조로 대체하라고 권할 것이고, 보통 그 권고를 따르는 게 이득이지만, 항상 그런 것은 아니다.
때론 람다가 메서드 참조보다 간결할 때가 있다. 주로 메서드와 람다가 같은 클래스 안에 있을 때 그렇다.
예를들어 다음 코드가 GoshThisClassNameIsHumonous 클래스 안에 있다고 해보자.
🔹메서드 참조
이를 람다로 대체하면 다음처럼 된다.
🔸람다
메서드 참조 쪽이 더 짧지도, 명확하지도 않기 때문에 람다 쪽이 더 낫다.
인스턴스 메서드를 참조하는 유형은 다섯 가지다. 본론에서 살펴 본 것이 정적 메서드 참조다.
나머지 유형 네가지를 살펴보자.
✏️한정적 인스턴스 메서드 참조
✏️비한정적 인스턴스 메서드 참조
✏️클래스 생성자 메서드 참조
✏️배열 생성자 메서드 참조
🍑 결론
메서드 참조는 람다의 간단명료한 대안이 될 수 있다. 메서드 참조 쪽이 짧고 명확하다면 메서드 참조를 쓰고, 그렇지 않을 때만 람다를 사용하라.
Referenced by
-