Study

✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 📌 이 장의 내용 형식 검사, 형식 추론, 제약 메서드 참조 람다, 메서드 참조 활용하기 람다 표현식을 조합할 수 있는 유용한 메서드 비슷한 수학적 개념 3.5 형식 검사, 형식 추론, 제약 람다 표현식 자체에는 람다가 어떤 함수형 인터페이스를 구현하는지의 정보가 포함되어 있지 않습니다. 따라서 람다 표현식을 제대로 이해하려면 람다의 실제 형식을 파악해야 합니다. 3.5.1 형식 검사 람다가 사용되는 컨텍스트를 이용해서 람다의 형식을 추론할 수 있습니다. 어떤 컨텍스트에서 기대되는 람다 표현식의 형식을 대상 형식이라고 부릅니다. 람다 표현식을 사용할 때 실제 어떤 일이 일어나는지 보여주는..
✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 📌 이 장의 내용 람다란 무엇인가? 어디에, 어떻게 람다를 사용하는가? 실행 어라운드 패턴 함수형 인터페이스 사용 3.1 람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것입니다. 람다의 특징은 다음과 같습니다. 익명 : 보통의 메서드와 달리 이름이 없으므로 익명이라 표현합니다. 함수 : 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부릅니다. 전달 : 람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있습니다. 간결성 : 익명 클래스처럼 자질구레한 코드를 구현할 필요가 없으므로 람다 표현식은 늘 간결하고 유연합니다. 람다 표현식을 사용하..
✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 📌이 장의 내용 변화하는 요구사항에 대응 동작 파라미터화 익명 클래스 람다 표현식 미리 보기 실전 예제 : Comparator, Runnable, GUI 동작 파라미터화를 이용하면 자주 바뀌는 요구사항에 효과적으로 대응할 수 있습니다. 동작 파라미터화란, 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미합니다. 이 코드 블록은 나중에 프로그램에서 호출됩니다. 즉, 코드 블록의 실행을 나중으로 미룹니다. 동작 파라미터화로 자주 변화하는 요구사항에 유연하게 대응할 수 있습니다. 2.1 변화하는 요구사항에 대응하기 2.1.1 첫 번째 시도 : 녹색 사과 필터링 초기 요구사항은 녹색 ..
✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 📌 이 장의 내용 자바가 거듭 변화하는 이유 컴퓨팅 환경의 변화 자바에 부여되는 시대적 변화 요구 자바 8과 자바 9의 새로운 핵심 기능 소개 1.1 역사의 흐름은 무엇인가? 자바 역사를 통틀어 가장 큰 변화가 자바 8에서 일어났다. 자바 1.0 : 스레드와 스레드 락, 메모리 모델을 지원하지만, 저수준 기능 활용 힘듦 자바 5 : 스레드 풀, 병렬 실행 컬렉션 등의 아주 강력한 도구 도입 자바 7 : 병렬 실행에 도움을 줄 수 있는 포크 및 프레임워크를 제공했지만 활용 어려움 자바 8 : 스트림 API, 메서드 참조와 람다, 인터페이스와 디폴트 메서드 제공 1.2 왜 아직도 자바는 변화..
[아이템 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(Obje..
클래스가 내부적으로 하나 이상의 자원에 의존하고, 그 자원이 클래스 동작에 영향을 준다면 정적 유틸리티 클래스와 싱글턴과 는 사용하지 않는 것이 좋습니다. 이 자원들을 클래스가 직접 만들게 해서도 안되며, 그 대신 필요한 자원을 생성자에 넘겨주는 것이 바람직합니다. 의존 객체 주입을 통해 클래스의 유연성, 재사용성, 테스트 용이성을 개선할 수 있습니다. 정적 유틸리티 클래스를 사용하여 구현 public class SpellChecker { private static final Lexicon dictionary = ...; private SpellChecker() {} // 객체 생성 방지 public static boolean isValid(String word) { ... } public static ..
가끔 단순히 정적 메서드와 정적 필드만을 포함하는 클래스를 만들고 싶을 때가 있습니다. 이는 객체 지향적 사고 방식과는 다소 거리가 있어서 종종 부적절하게 사용되기도 하지만, 특정 상황에서는 유용하게 사용될 수 있습니다. 예를 들어, java.lang.Math나 java.util.Arrays 같은 클래스는 기본 타입 값이나 배열 관련 메서드들을 모아놓는데 사용됩니다. 또한, java.util.Collections 처럼 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드(또는 팩토리 메서드)를 모아놓을 수 있습니다. 이는 자바 8부터 인터페이스에도 가능해졌습니다. 마지막으로, 이러한 방식은 final 클래스와 관련된 메서드들을 모아놓을 때 사용될 수 있습니다. final 클래스는 상속이 불가능하므로,..
싱글턴은 오직 한 번만 인스턴스화 할 수 있는 클래스를 의미합니다. 함수나 시스템 컴포넌트와 같이 설계상 유일하게 존재해야 하는 경우에 사용됩니다. 그러나 이러한 싱글턴 클래스는 테스트하기 어렵다는 단점이 있습니다. 인터페이스를 정의하고 이를 구현하는 방식으로 싱글턴을 사용하면, 싱글턴 인스턴스를 가짜로 대체하는 것이 불가능해집니다. 싱글턴을 만드는 방식은 보통 둘 중 하나입니다. 두 방식 모두 생성자는 private으로 감춰두고, 유일한 인스턴스에 접근할 수 있는 수단ㅇ으로 public static 멤버를 하나 마련해둡니다. public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() { ... } publi..
생성자와 정적 팩토리 메서드의 제약 생성자와 정적 팩토리 메서드에는 선택적 매개변수가 많을 때 적절히 대응하기 어렵다는 제약이 있습니다. 점층적 생성자 패턴 각 생성자의 매개변수 개수를 다르게 만들어, 여러 개의 생성자를 만드는 방식입니다. public class NutritionFacts { private final int servingSize; // (ml, 1회 제공량) 필수 private final int servings; // (회, 총 n회 제공량) 필수 private final int calories; // (1회 제공량당) 필수 private final int fat; // (g/1회 제공량) 필수 private final int sodium; // (mg/1회 제공량) 필수 private..
✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 📌 이 장의 내용 스칼라 소개 자바와 스칼라의 관계 스칼라의 함수와 자바의 함수 비교 클래스와 트레이트 이 장에서는 스칼라 언어를 소개하고, 자바와 비교하며 함수형 프로그래밍의 다양한 기능을 살펴봅니다. 스칼라에서는 자바에 비해 더 다양하고 심화된 함수형 기능을 제공하며, 간결하고 가독성이 좋은 코드를 구현할 수 있다는 점을 확인할 수 있습니다. 이를 위해 스칼라로 간단한 프로그램을 구현하고 컬렉션을 다루는 방법, 함수, 클로저, 커링 등을 살펴보고, 인터페이스와 디폴트 메서드의 기능을 담당하는 트레이트라는 기능도 살펴봅니다. 20.1 스칼라 소개 이 절에서는 스칼라의 특징을 간단한 "H..
규니95
'Study' 카테고리의 글 목록