
[Effective Java] - 스트림에서는 부작용 없는 함수를 사용하라
Item 46 : 스트림에서는 부작용 없는 함수를 사용하라 들어가며 스트림은 그저 또 하나의 API가 아니다. 함수형 프로그래밍에 기초한 패러다임이다. 스트림이 제공하는 표현력, 속도, 병렬성을 얻으려면 API는 물론이고 이 패러다임까지 함께 받아들여야 한다. 스트림 패러다임의 핵심은 계산을 일련의 변환으로 재구성하는 부분 이다. 이때 각 변환 ...

Item 46 : 스트림에서는 부작용 없는 함수를 사용하라 들어가며 스트림은 그저 또 하나의 API가 아니다. 함수형 프로그래밍에 기초한 패러다임이다. 스트림이 제공하는 표현력, 속도, 병렬성을 얻으려면 API는 물론이고 이 패러다임까지 함께 받아들여야 한다. 스트림 패러다임의 핵심은 계산을 일련의 변환으로 재구성하는 부분 이다. 이때 각 변환 ...

Item 43 : 람다보다는 메서드 참조를 사용하라 들어가며 Java 8에서 람다가 도입되면서 익명 클래스보다 간결하게 함수 객체를 만들 수 있게 되었다. 그런데 람다보다 더 간결하게 만드는 방법이 있다. 바로 메서드 참조(method reference) 다. 메서드 참조를 사용하면 람다의 간결함을 넘어 더욱 명확하고 읽기 쉬운 코드를 작성할 수 ...

Item 42 : 익명 클래스보다는 람다를 사용하라 들어가며 예전 자바에서 함수 타입을 표현할 때는 추상 메서드를 하나만 담은 인터페이스(또는 추상 클래스)를 사용했다. 이런 인터페이스의 인스턴스를 함수 객체(function object) 라고 하여, 특정 함수나 동작을 나타내는 데 사용했다. JDK 1.1부터 함수 객체를 만드는 주요 수단은 익명...

Item 39 : 명명 패턴보다 애너테이션을 사용하라 들어가며 전통적으로 Java에서는 특정 요소에 추가적인 정보나 처리 방식을 부여하기 위해 명명 패턴(naming pattern) 을 사용해왔다. 예를 들어, JUnit 3 버전까지는 테스트 메서드의 이름을 test로 시작하도록 강제했다. 하지만 명명 패턴은 여러 가지 단점을 가지고 있으며, Ja...

들어가며 우아한테크코스 8기 프리코스 2주차 과제는 자동차 경주 게임 구현이었다. 1주차 문자열 계산기보다 훨씬 고민할 거리가 많았다. “생성자를 쓸까, 정적 팩터리 메서드를 쓸까?”, “검증은 어디서 해야 하지?”, “Cars 클래스를 굳이 만들어야 하나?”… 코딩하면서 수없이 고민했던 것들이다. 이 글에서는 그런 설계 고민들을 하나씩 정리해...

Item 36 : 비트 필드 대신 EnumSet을 사용하라 들어가며 열거 타입을 집합으로 사용해야 할 때가 있다. 예컨대 텍스트 스타일을 표현할 때 굵게, 기울임, 밑줄, 취소선 등 여러 스타일을 동시에 적용할 수 있어야 한다. 과거에는 이런 경우 각 상수에 서로 다른 2의 거듭제곱 값을 할당한 비트 필드(bit field) 방식을 사용했다. 그...

Item 32 : 제네릭과 가변인수를 함께 쓸 때는 신중하라 들어가며 가변인수(varargs)는 메서드에 임의 개수의 인수를 전달할 수 있게 해주는 편리한 기능이다. 하지만 제네릭과 함께 사용하면 타입 안전성에 심각한 구멍이 생긴다. 이번 아이템에서는 제네릭 varargs의 위험성과 이를 안전하게 사용하는 방법을 알아본다. 가변인수와 제네릭의...

들어가며 Java의 기본 개념에 대한 공부를 하며 중국어 자료를 한국어로 다시 정리하고자 한다. 기본 개념과 상식 자바 언어의 특징은 무엇인가? 배우기 쉽다. (구문이 간단하고 배우기 쉬움) 객체 지향 (캡슐화, 상속, 다형성 등) 플랫폼 독립성 (Java 가상 머신; JVM은 플랫폼 독립성을 구현한다) 멀티스레드 지원 (C++ ...

Item 30 : 이왕이면 제네릭 메서드로 만들라 들어가며 클래스와 마찬가지로 메서드도 제네릭으로 만들 수 있다. Collections의 알고리즘 메서드(binarySearch, sort 등)는 모두 제네릭이다. 제네릭 메서드는 클라이언트가 직접 형변환을 해야 하는 메서드보다 훨씬 안전하고 사용하기 쉽다. 이번 아이템에서는 제네릭 메서드를 작성하는...

Item 27 : 비검사 경고를 제거하라 들어가며 제네릭을 사용하기 시작하면 수많은 컴파일러 경고를 마주하게 된다. 비검사 형변환 경고, 비검사 메서드 호출 경고, 비검사 매개변수화 가변인수 타입 경고, 비검사 변환 경고 등이 그것이다. 제네릭에 익숙해질수록 마주치는 경고 수는 줄어들지만, 새로 작성한 코드가 한 번에 깨끗하게 컴파일되리라 기대하기...