Study/모던 자바 인 액션 3장, 람다란 무엇인가? 2021. 8. 7. 람다란 무엇인가? 메서드로 전달할 수 있는 익명 함수를 단순화한 것 구성 파라미터 리스트 바디 반환 형식 예외 기본적인 람다 표현식 ( 예제, 파라미터가 없는 형태 ) () -> {} 파라미터가 없으며 void를 반환하는 람다 표현식 코드 예제 () -> { system.out.println("hello") } () -> “Raoul” 파라미터가 없으며 문자열을 반환하는 표현식 () -> { return “Mario”; } 파라미터가 없으며 ( 명시적으로 return 문을 이용해서 문자열을 반환 ) 함수형 인터페이스란? 정확히 하나의 추상메서드를 지정하는 인터페이스다. ex) Comparator, Runnable 디폴트메서드는 상관없다. ( 오직 필수로 구현해야할 추상메서드가 하나면 오케이 ) 함수 디스.. 2장, 동작 파라미터화 코드 전달하기 2021. 8. 7. 동작 파라미터화 자주 바뀌는 요구사항에 효과적으로 대응할 수 있게 해주는 방법 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미 핵심기능 ( 각 항목에 적용할 동작 )을 기타 로직과 분리할 수 있다는 것이 가장 큰 장점 DRY 원칙 “같은 것을 반복하지 말 것” 동작 메서드에 파라미터를 추가하여 동작을 제어하는 방식은 절대 유연하지 않다. 성격이 조금이라도 다른 동작 ( 파라미터 타입 )이 들어오면 번잡스러워진다. Predicate 선택 조건을 결정하는 인터페이스 조건에 따라 메서드가 다르게 동작하는 패턴을 “전략 디자인 패턴”이라고 한다. 인터페이스로 인스턴스, 파라미터를 받고, 구현부에서 구현클래스를 선택하여 동작시키는 것 각 알고리즘을 캡슐화하는 알고리즘 패밀리를 정의해둔 다음에 런타임에 알고리.. 1장, 자바 8,9,10,11은 무슨일이 벌어지고 있는가? 2021. 8. 7. java8 추가된 새로운 기능 스트림 처리 한 번에 한 개씩 만들어지는 연속적인 데이터 항목들의 모임 Java8, 스트림 API 추가, java.util.stream => 조립라인처럼 어떤 항목을 연속으로 제공하는 어떤 기능 ( 단순 정의 ) 스트림 파이프라인을 이용해서 입력부분을 여러 CPU 코어에 쉽게 할당 가능 스레드라는 복잡한 작업을 사용하지 않으면서도 공짜로 병렬성을 얻을 수 있다. 동작 파라미터화로 메서드에 코드 전달하기 코드 일부를 API로 전달하는 기능 1장 Comparator 객체를 생성해서 넘겨주는 방식은 “너무 복잡하며, 기존 동작을 단순하게 재활용한다는 측면에서도 맞지않다.” ==> “동작 파라미터화”를 이용해 간결하게 병렬성과 공유 가변 데이터 “병렬성을 꽁자로 얻을 수 있다” 에.. 이전 1 다음