728x90
728x90
익명 클래스로 다양한 동작을 구현할 수 있지만 만족할 만큼 코드가 깔끔하지는 않았다. 깔끔하지 않은 코드는 동작 파라미터를 실전에 적용하는 것을 막는 요소다. 3장에서는 더 깔끔한 코드로 동작을 구현하고 전달하는 자바 8의 새로운 기능인 람다 표현식을 설명한다. 람다 표현식은 익명 클래스처럼 이름이 없는 함수이고 메서드를 인수로 전달할 수 있으므로 일.단.은 익명 클래스와 비슷하다고 생각하자(람다 표현식은 정확히는 조금 특수한 익명클래스이다). 람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 표현할 수 있다. 람다 표현식에는 이름은 없지만 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트는 가질 수 있다. 람다의 특징을 하나씩 자세히 살펴보자. 익명..
모던 자바 인 액션 책을 작년 이맘때쯤에 우형 없는 우테코에서 진행했었는데, 아이러니하게도 우형 있는 우테코(라임을 맞추고 싶은 욕구가 들끓었다)에서 다시 진행하고있다. 스터디를 할지말지 고민을 했는데 다시 공부하게 된 원인은 아무래도 처음 공부할 때 어려운 챕터들은 스킵했었고, 이해가 안됨에도 억지로 읽고 지나갔던 내용들도 꽤 많았기 때문에 이번 2회차는 확실하게 이해하고 넘어가겠다는 전제를 깔고 스터디에 임하려고한다. 동작 파라미터화 코드 전달하기 시시각각 변하는 사용자 요구사항에 어떻게 대응해야 할까? 엔지니어링적인 비용이 가장 최소화되어야 한다. 새로 추가한 기능은 쉽게 구현할 수 있어야 한다. 장기적인 관점에서 유지보수가 쉬어야 한다. 동작 파라미터화(behavior parameterizatio..
인 액션 시리즈는 개인적으로 매우 좋아하는 책이다. 정확한 이유는 설명하기 어렵지만, 아마도 모던 자바 인 액션을 처음 읽고 느꼈던 모던 자바(자바17이 나온 시점에, 자바8을 모던이라 표현하는게 웃기긴하지만)를 접했을 때의 신선한 충격을 받았던 그 기억이 아직도 생생하게 남아서 그런 것이 아닐까 싶다. 사실 플러터에는 크게 관심은 없지만.... 크로스 플랫폼에는 관심이 있기에(적고보니 모순적이지만...) 이번 서평 도서로 받게 된 플러터 인 액션 또한 기대됐다. 항상 그랬듯이 목차부터 언급하면 좋을 것 같다. 목차 PART I 플러터와 다트 chapter 1 플러터 1.1 플러터에서 다트를 사용하는 이유 1.2 다트 1.3 누가 플러터를 사용할까? 1.4 플러터 사용 권장 대상 1.5 대상 독자 1.6..
클래스와 마찬가지로, 메서드도 제네릭으로 만들 수 있다. 매개변수화 타입을 받는 정적 유틸리티 메서드는 보통 제네릭이다. Collections의 알고리즘 메서드는 모두 제네릭이다. 제네릭 메서드 작성법은 제네릭 타입 작성법과 비슷하다. 다음은 두 집합의 합집합을 반환하는, 문제가 있는 메서드다. public static Set union(Set s1, Set s2) { Set result = new HashSet(s1); result.addAll(s2); return result; } 컴파일은 되지만 경고가 두 개 발생한다. 경고를 없애려면 이 메서드를 타입 안전하게 만들어야 한다. 메서드 선언에서의 세 집합(입력 2개, 반환 1개)의 원소 타입을 타입 매개변수로 명시하고, 메서드 안에서도 이 타입 매개..
JDK가 제공하는 제네릭 타입과 메서드를 사용하는 일은 일반적으로 쉬운 편이지만, 제네릭 타입을 새로 만드는 일은 조금 더 어렵다. 아이템 7에서 다룬 단순한 스택 코드를 다시 살펴보자. public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e) { ensureCapacity(); elements[size++] = e; } public Object pop() { if (si..