본문 바로가기
728x90

자바 84

Annotation 어노테이션은 메타데이터의 한 형식이다. 어노테이션은 어노테이션을 달은 연산에 대해 직접적인 영향을 주지 않는다. 어노테이션을 다음과 같은 목적으로 사용될 수 있다. 1. Information for the compiler: 어노테이션을 통해 에러를 찾아내고 경고를 억제할 수 있다. 2. Compile-time and deployment-time processing: 소프트웨어 툴들은 어노테이션을 실행해 코드를 나타낼 수 있다. 3. Runtime processing: 일부 어노테이션들은 런타임에 검증되는 데에 사용될 수 있다. Annotations Basics The Format of an Annotation 어노테이션에서 '@'는 컴파일러에게 다음에 오는 것이 어노테이션임을 알려주며 어노테이션은 다음과.. 2022. 4. 23.
9장. 리팩터링, 테스팅, 디버깅 이번 장에서는 기존 코드를 이용해 새로운 프로젝트를 시작하는 상황을 가정한다. 그 후 람다를 이용해 가독성과 유연성을 높이면서 기존 코드를 리팩토링 하는 방법을 소개한다. 가독성과 유연성을 개선하는 리팩터링 람다, 메서드 참조, 스트림 등을 이용해 가독성이 높고 유연한 코드로 리팩터링 하는 과정을 살펴보자 코드 가독성 개선 코드 가독성이 개선되면 다른 사람이 코드를 이해하기 쉬워지고 유지보수 할 수 있게 된다. 자바 8의 새로운 기능을 사용하면 코드가 간결하면서도 이해하기 쉬워진다. 익명 클래스를 람다 표현식으로 리팩터링하기 추상 메서드를 구현하는 익명 클래스를 람다로 리팩터링 할 수 있지만 모든 경우에 적용할 수 있는 것은 아니다. 다음과 같은 경우 람다로 변환할 수 없다. 1. 익명 클래스에서 thi.. 2022. 3. 17.
Item 42. 익명 클래스보다는 람다를 사용하라 예전에는 자바에서 함수 타입을 표현할 때 추상 메서드를 하나만 담은 인터페이스를 사용했고 이런 인터페이스의 인스턴스를 함수 객체(function object)라 해서, 특정 함수나 동작을 나타내는대 사용했다. 함수 객체를 만드는 방식으로는 익명 클래스를 주로 사용했다. 하지만 익명 클래스는 너무 길기 때문에 함수형 프로그래밍에 적합하지 않았다. 자바 8에 와서야 람다가 도입되 함수 객체를 람다를 통해 짧은 길이로도 만들 수 있게 되었다. 람다는 함수나 익명 클래스와 개념은 비슷하지만 코드는 훨신 간결하다. 람다의 매개변수와 반환값은 컴파일러가 타입 추론을 사용해 추론하기 때문에 통상적인 상황에서는 타입을 명시하지 않아도 된다. 그럼에도 타입을 명시해야 코드가 더 명확할 때에는 타입을 명시해야 한다. 람다.. 2022. 3. 12.
4장 스트림 소개 많은 자바 애플리케이션에서 컬랙션을 사용한다. 하지만 컬랙션 관련 연산들은 연산을 통해 기대하는 것에 집중하기 보다는 구현을 어떻게 할지를 명시해야 한다. 또 한 많은 요소를 포함한 컬랙션을 처리할 경우 병렬 처리가 효과적이지만 병렬 처리 코드를 구성하는 것은 단순 반복 처리 코드에 비해 복잡하고 디버깅이 어렵다. 이런 문제들에 대한 해결책이 스트림이다. 스트림이란 무엇인가? 스트림을 이용하면 선언형으로 컬렉션 데이터를 처리할 수 있고 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다. 또 한 여러 빌딩 블록 연산을 연결해 복잡한 데이터 처리 파이프라인을 만들 수 있다. 연산이 복잡함에도 가독성은 유지된다. 스트림에서 filter 같은 연산은 고수준 빌딩 블록(high-level.. 2022. 2. 16.
728x90