이펙티브 자바를 읽고 정리한 글입니다. 이해한 내용을 바탐으로 요약하며 직접 사용하면서 겪었던 경험을 기반으로 개인적인 생각과 의견이 포함되어 있을 수 있습니다. 😃프로젝트를 할 때, 자주 사용했던 방법이다.단순히 new 키워드를 통해 생성하는 것 보다 of, fro

Object 의 equals() 는 다음과 같이 재정의하지 않으면 해당 클래스를 통해 생성한 인스턴스는 오직 자기 자신과만 같게 된다. 보면 알 수 있듯이 Object.equals()는 결국 == 연산자를 이용하여 비교하기 때문에 해당 인스턴스가 저장된 메모리의 주소

이전 포스트에서 equals 를 재정의한 클래스에서 모두 hashCode도 재정의해야한다고 언급했다. 이유를 알아보자 😃

추상화의 기본 단위인 클래스와 인터페이스는 자바 언어의 심장이다! 더욱 견고하고 편하고 유연한 프로그래밍을 위해 클래스와 인터페이스에 대해 더 알아본다. 오늘은 클래스 😃 정보은닉.. 캡슐화! 내부 구현을 외부에 숨긴다. 정보 은닉을 하면 뭐가 좋을까? 여러 컴포

📌 불변 클래스 불변 클래스란 간단히 말해 그 인스턴스의 내부 값을 수정할 수 없는 클래스를 말한다. 불변 클래스가 아닌 Address 를 예시로 들어 설명해보겠다. Address (불변 클래스 X) 불변 클래스가 아닌 Address 클래스의 경우, 객체 생성
열거형을 사용하여 하드코딩을 피하고 가독성, 유지보수, 타입 안정성을 고려해보자! 우리는 같은 기능을 하더라도 더 잘 읽히고 확장성 및 유지보수가 용이한 코드를 위해 고민하고 노력해야한다. 😃 열거 타입으로 생성된 인스턴스는 싱글톤으로 관리된다. 열거 타입은 밖에

자바에는 문제 상황을 알리는 타입으로 검사 예외, 런타임 예외, 에러 이렇게 3가지를 제공한다. 무조건 이게 정답이다! 아니지만 참고하면 좋은 멋진 지침들에 대해서 알아보자 😃 아이템 70~71 을 읽고 정리해본다.프로그램에서 예측 가능한 상황에서 발생할 수 있는 예

C, C++ 과 다르게 자바는 GC 로 인해 다 쓴 객체를 알아서 회수해 가므로 메모리 관리가 훨씬 수월해졌다. 하지만 메모리 관리에 더 이상 신경 쓰지 않아도 되는 것은 아니다.다음 스택을 간단하게 구현한 예시를 살펴보자.특별한 문제는 없어보이지만, 메모리 누수의 문
호출된 메서드가 실패하더라도 해당 객체는 메서드 호출 전 상태를 유지하는 특성을 실패 원자성이라고 한다. 실패 원자성을 지키면 작업 중 예외가 발생해도 해당 객체를 정상적인 상태를 가지며 위와 같이 불변 클래스를 정의하여 불변 객체를 생성하도록 정의하면 애초에 재할당