본문 바로가기

Programming/JAVA

(139)
람다식(5) - 메서드 참조 1 : 메서드 참조의 개념 메서드 참조(Method References)의 개념은, 메서드를 참조해서 파라미터의 정보와 리턴 타입을 알아낸 다음 람다식에서 불필요한 파라미터를 제거하는 것이 목적입니다. 즉, 생략할 수 있는 것은 생략한다는 의미죠. 예를 들어 살펴보겠습니다. Math 클래스의 max( )라는 정적 메서드는 두 개의 값을 받아 큰 수를 리턴하는 메서드입니다. 이를 람다식으로 표현하면 다음과 같습니다. (left, right) -> Math.max(left, right); 지금 두 개의 파라미터 인자 값을 Math.max( ) 메서드의 파라미터로 단순히 전달만 하는 상황입니다. 단순한 상황이기 때문에, 아래와 같이 축약해서 표현할 수 있게 됩니다. Math :: max; 위와 같은 방식을 '메서드 참조'라고 표현합니다..
람다식(4) - 표준 API의 함수적 인터페이스 9 : minBy(), maxBy() 정적 메서드 Operator 함수적 인터페이스 중 하나인 BinaryOperator는 minBy( ), maxBy( )라는 정적 메서드를 제공합니다. 이 두 개의 메서드는 리턴 타입이 BinaryOperator 입니다. 아래와 같이 해당 메서드 minBy( )와 maxBy( )는 파라미터로 Comparator를 받게 되고, 이를 이용해서 최대 T 또는 최소 T를 얻는 BinaryOperator를 리턴하는 구조입니다. 리턴 타입 정적 메서드 BinaryOperator minBy(Comparator
람다식(4) - 표준 API의 함수적 인터페이스 8 : 디폴트 메서드 and(), or(), negate() 그리고 정적 메서드 isEqual() 2 앞서서 우리는 Predicate 함수적 인터페이스가 제공하는 디폴트 메서드 and( ), or( ), negate( )를 살펴보았습니다. 람다식(4) - 표준 API의 함수적 인터페이스 8 : 디폴트 메서드 and(), or(), negate() 그리고 정적 메서드 이번 아티클에서는 우리가 배웠던 함수적 인터페이스 중 Predicate 함수적 인터페이스의 내용을 살펴봅니다. boolean 리턴 기능을 중심으로 설명했었던 것을 기억하실 것입니다. xxxTest() 추상 메서드 nozeroslope.tistory.com 그런데 Predicate 함수적 인터페이스는 디폴트 메서드 외에 정적 메서드 isEqual( ) 메서드를 추가로 제공합니다. 다소 헷갈릴 수 있는 개념이자 사용법을 갖고 있는데, 간단하게 사..
람다식(4) - 표준 API의 함수적 인터페이스 8 : 디폴트 메서드 and(), or(), negate() 그리고 정적 메서드 isEqual() 1 이번 아티클에서는 우리가 배웠던 함수적 인터페이스 중 Predicate 함수적 인터페이스의 내용을 살펴봅니다. boolean 리턴 기능을 중심으로 설명했었던 것을 기억하실 것입니다. xxxTest() 추상 메서드도 기억나시나요? 잊었다면 다시 복습하고 내용을 상기해 보도록 합시다. 람다식(4) - 표준 API의 함수적 인터페이스 6 : Predicate Functional Interface Predicate 함수적 인터페이스는, 파라미터의 값을 조사하여 boolean 값을 리턴하는 메서드를 가지고 있습니다. 대부분 testXXXX( ) 형태의 메서드이죠. 이 인터페이스의 추상 메서드들도 한번 아래와 같 nozeroslope.tistory.com 함수적 인터페이스 Predicate에도 디폴트 메서드와 정적..
람다식(4) - 표준 API의 함수적 인터페이스 7 : 디폴트 메서드 andThen(), compose() 3 ○ Function으로 순차적 연결하기 Function 함수적 인터페이스는, 기본적으로 개념을 다시 한번 짚어보고 넘어가야 합니다. 아래 아티클을 통해서 기본적인 동작 방식을 상기하고 오시기 바랍니다. 람다식(4) - 표준 API의 함수적 인터페이스 4 : Function Functional Interface 1 이번 아티클에서는 Function 함수적 인터페이스에 대해서 살펴보겠습니다. Function 함수적 인터페이스의 특징은, 파라미터 값을 받아 리턴 값으로 타입 변환(매핑)하는 역할을 한다는 점입니다. 즉, nozeroslope.tistory.com 다시 복습해 보자면, Function 함수적 인터페이스는 (기본형일 경우) 추상 메서드 apply(T t)를 구현하게 됩니다. 이 인터페이스의 목적은..
람다식(4) - 표준 API의 함수적 인터페이스 7 : 디폴트 메서드 andThen(), compose() 2 앞서서 살펴본 디폴트 메서드인 andThen()과 compose()에 대해서 기본적인 내용을 우선 상기하도록 하겠습니다. 지금부터는 이 기본 내용을 가지고 각각의 인터페이스에서 실제 순차적으로 연결하여 이 메서드를 활용하는 방법을 알아볼 예정입니다. { System.out.println("consumerA: " + m.getName()); }; Consumer consumerB = (m) -> { System.out.println("consumerB: " + m.getId()); }; Consumer consumerAB = consumerA.andThen(consumerB); consumerAB.accept(new Member("스윙스", "AP ALCHEMY", null)); } } /* 출력 cons..
람다식(4) - 표준 API의 함수적 인터페이스 7 : 디폴트 메서드 andThen(), compose() 1 우리가 지금까지 살펴본 '함수적 인터페이스'의 기본 성질이 무엇이었나요? 뜬금없이 느껴지겠지만, 너무나도 기본적인 내용이니 잘 기억하실 것입니다. 바로 "하나의 추상 메서드를 가지고 있으며, 람다식을 통해 해당 추상 메서드를 재정의 한 익명 구현 객체를 생성할 수 있는 것"입니다. 이 정의를 지금 왜 다시 꺼냈을까요? 지금부터는 함수적 인터페이스의 정적 메서드와 디폴트 메서드에 대해서 다룰 예정이기 때문입니다. 자, 특정 함수적 인터페이스가 한 개의 기본 추상 메서드를 갖고 있는데 - 여기에 다른 정적 메서드나 디폴트 메서드를 갖고 있다면...더이상 함수적 인터페이스가 아니게 되는 것일까요? 결론만 얘기하면, 아닙니다. 함수적 인터페이스는, 기본 추상 메서드를 한 개만 갖고 있는 게 맞다면 정적 메서드와..
람다식(4) - 표준 API의 함수적 인터페이스 6 : Predicate Functional Interface Predicate 함수적 인터페이스는, 파라미터의 값을 조사하여 boolean 값을 리턴하는 메서드를 가지고 있습니다. 대부분 testXXXX( ) 형태의 메서드이죠. 이 인터페이스의 추상 메서드들도 한번 아래와 같이 알아보도록 하겠습니다. 인터페이스 명 추상 메서드 설명 Predicate boolean test(T t) 객체 T를 조사한다. BiPredicate boolean test(T t, U u) 객체 T와 U를 비교해 조사한다. DoublePredicate boolean test(double value) double 값을 조사한다. IntPredicate boolean test(int value) int 값을 조사한다. LongPredicate boolean test(long value) lon..