본문 바로가기

이펙티브자바11

[이펙티브 자바] 05. 열거 타입과 애너테이션 [이펙티브 자바] 05. 열거 타입과 애너테이션 자바에는 특수한 목적의 참조 타입이 두 가지가 있다. 하나는 클래스의 일종인 열거 타입(enum)이고, 다른 하나는 인터페이스의 일종인 애너테이션(annotation)이다. 아이템 34. int 상수 대신 열거 타입을 사용하라 자바에서 열거 타입을 지원하기 전에는 아래 코드처럼 정수 상수를 한 묶음 선언해서 사용하곤 했다. public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int ORANGE_NAVEL = 0 public static final int ORANGE_TEMPLE = 1; 정수 열거 패턴 기법에는 단점이 많다. 1.. 2022. 9. 1.
[이펙티브 자바] 04. 제네릭 [이펙티브 자바] 04. 제네릭 제네릭은 자바 5부터 사용할 수 있다. 제네릭을 지원하기 전에는 컬렉션에서 객체를 꺼낼 때마다 형변환을 해야했는데, 런타임에 형변환 오류가 나곤 했다. 반면 제네릭을 사용하면 컬렉션이 담을 수 있는 타입을 컴파일러에 알려주게 되어 컴파일러는 알아서 형변환 코드를 추가할 수 있게 된다. 덕분에 더 안전하고 명확한 프로그램을 만들 수 있다는 장점이 있지만, 코드가 복잡해진다는 단점이 있다. 아이템 26. 로 타입은 사용하지 말라 클래스와 인터페이스 선언에 타입 매개변수가 쓰이면, 이를 제네릭 클래스 혹은 제네릭 인터페이스라 한다. 각각의 제네릭 타입은 일련의 매개변수화 타입을 정의한다. 제네릭 타입을 하나 정의하면 그에 딸린 로 타입(raw type)도 함께 정의된다. 로 타.. 2022. 8. 24.
[이펙티브 자바] 03. 클래스와 인터페이스 [이펙티브 자바] 03. 클래스와 인터페이스 아이템 15. 클래스와 멤버의 접근 권한을 최소화하라 어설프게 설계된 컴포넌트와 잘 설계된 컴포넌트의 가장 큰 차이는 바로 클래스 내부 데이터와 내부 구현 정보를 외부 컴포넌트로부터 얼마나 잘 숨겼느냐다. 정보 은닉, 혹은 캡슐화라고 하는 이 개념은 소프트웨어 설계의 근간이 되는 원리다. 15.1 캡슐화의 장점 캡슐화의 장점은 정말 많은데, 그중 대부분은 시스템을 구성하는 컴포넌트들을 서로 독립시켜서 개발, 테스트, 최저과, 적용, 분석, 수정을 개별적으로 할 수 있게 해주는 것과 연관되어 있다. 시스템 개발 속도를 높인다. 여러 컴포넌트를 병렬로 개발할 수 있기 때문이다. 시스템 관리 비용을 낮춘다. 각 컴포넌트를 더 빨리 파악하여 디버깅할 수 있고, 다른 .. 2022. 8. 20.
[이펙티브 자바] 02. 모든 객체의 공통 메서드 https://be-developer.tistory.com/87 [이펙티브 자바] 01. 객체 생성과 파괴 [이펙티브 자바] 01. 객체 생성과 파괴 객체의 생성과 파괴를 다룬다. 객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하는 법, 올바를 객체 생성 방법과 불필요한 생성을 피하는 방법, be-developer.tistory.com [이펙티브 자바] 02. 모든 객체의 공통 메서드 Object는 객체를 만들 수 있는 구체 클래스지만 기본적으로는 상속해서 사용하도록 설계되었다. Object에서 final이 아닌 메서드(equals, hashCode, toString, clone, finalize)는 모두 재정의를 염두해 두고 설계된 것이라 재정의 시 지켜야 하는 일반 규약이 명확히 정의되어 있다... 2022. 8. 10.
[이펙티브 자바] 01. 객체 생성과 파괴 [이펙티브 자바] 01. 객체 생성과 파괴 객체의 생성과 파괴를 다룬다. 객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하는 법, 올바를 객체 생성 방법과 불필요한 생성을 피하는 방법, 제때 파괴됨을 보장하고 파괴 전에 수행해야 할 정리 작업을 관리하는 요령을 알아본다. 아이템1. 생성자 대신 정적 팩터리 메서드를 고려하라 클래스의 인스턴스를 얻는 전통적인 수단은 public 생성자이고, 이와 별도로 정적 팩터리 메서드(static factory method)를 제공할 수 있다. // 기본타입인 boolean을 받아 박싱 클래스인 Boolean 객체 참조로 변환하는 정적 메소드 public static Boolean valueOf(boolean b){ return b ? Boolean.TRUE : .. 2022. 8. 2.
728x90
반응형