1. 람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있다. 람다의 특징 익명: 보통의 메서드와 달리 이름이 없으므로 익명이라 표현한다. 구현해야 할 코드에 대한 걱정거리가 줄어든다. 함수: 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다. 전달: 람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있다. 간결성: 익명 클래스처럼 많은 자질구레한 코드를 구현할 필요가 없다. 람다의 구성 // 기존 코드 Comparator byWeight = new Comparator() { @Override public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWe..
암호 검사기 검사할 규칙은 다음 세 가지이다. 길이가 8글자 이상 0부터 9 사이의 숫자를 포함 대문자 포함 세 규칙을 모두 충족한다. -> 강함 2개의 규칙을 충족한다. -> 보통 1개 이하의 규칙을 충족한다. -> 약함 테스트할 기능의 이름을 정해보자. '약함', '보통', '강함'은 암호 등급이라고 생각할 수 있다. PasswordLevel이라는 단어를 사용하자. 등급 대신에 강도라는 의미를 사용할 수도 있다. 이 경우 PasswordStrength라는 단어를 사용할 수 있다. 암호 등급과 암호 강도 중에서 PasswordStrength를 선택했다. public class PasswordStrengthMeterTest { @DisplayName("테스트 메서드 생성") @Test void name(..
동적 파라미터화 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미한다. 리스트의 모든 요소에 대해서 '어떤 동작'을 수행할 수 있음 리스트 관련 작업을 끝낸 다음에 '어떤 다른 동작'을 수행할 수 있음 에러가 발생하면 '정해진 어떤 다른 동작'을 수행할 수 있음 1. 변화하는 요구사항에 대응하기 기존의 농장 재고목록 애플리케이션에 리스트에 녹색 사과만 필터링하는 기능을 추가한다고 가정하자. 사과 색을 정의하는 Color num이 존재한다고 가정하자. 첫 번째 시도: 녹색 사과 필터링 enum Color { RED, GREEN } public static List filterGreenApples(List inventory) { List result = new ArrayList(); // 사과 누..
TDD로 개발할 때 먼저 해야 할 것은 기능을 검증하는 테스트 코드를 작성하는 것이다. 덧셈 기능을 검증하기 위한 테스트 코드를 작성하자. 테스트 코드 작성 import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.*; public class CalculatorTest { @DisplayName("덧셈 기능 테스트") @Test void plus() { int result = CalCulator.plus(1, 2); assertThat(3).isEqualTo(result); } } 이 코드를 작성하면 12행에서 Calculator 클래스가 없다..
자바8은 간결한 코드, 멀티코어 프로세서의 쉬운 활용이라는 두 가지 요구사항을 기반으로 한다. 일단 자바 8에서 제공하는 새로운 기술이 어떤 것인지 확인하자. 스트림 API 메서드에 코드를 전달하는 기법 인터페이스의 디폴트 메서드 1. 자바 8의 3가지 프로그래밍 개념 스트림 처리 스트림이란? 한 번에 한 개씩 만들어지는 연속적인 데이터 항목들의 모임이다. 스트림 API의 핵심은 기존에는 한 번에 한 항목을 처리했지만 이제 자바 8에서는 우리가 하려는 작업을 고수준으로 추상화해서 일련의 스트림으로 만들어 처리할 수 있다는 것이다. 또한 입력 부분을 여러 CPU 코어에 쉽게 할당할 수 있다는 부가적인 이득도 얻을 수 있다. 스레드라는 복잡한 작업을 사용하지 않으면서도 공짜로 병렬성을 얻을 수 있다. 동작 ..