일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 프리미티브 타입
- 자바스터디
- Effective JAVA
- 람다식
- annotation processor
- public 필드
- Study Halle
- 함수형 인터페이스
- 자바할래
- System.out
- System.err
- auto.create.topics.enable
- System.in
- Switch Expressions
- 익명 클래스
- 접근지시자
- 제네릭 와일드 카드
- 스파르타코딩클럽
- github api
- raw 타입
- 상속
- junit 5
- 로컬 클래스
- 합병 정렬
- 브릿지 메소드
- Java
- 정렬
- 바운디드 타입
- 제네릭 타입
- 항해99
- Today
- Total
목록Book (85)
코딩하는 털보
이펙티브 자바, 아이템 6. 불필요한 객체 생성을 피하라 똑같은 기능의 객체를 매번 생성하기보다는 객체 하나를 재사용하는 편이 나을 때가 많다. String String s = new String("bikini"); 대신 String s = "bikini" 전자는 매번 새로운 인스턴스를 만들지만 후자는 하나의 인스턴스를 사용하며 같은 문자열 리터럴을 사용하는 코드에서 같은 객체를 재사용한다. 정적 팩터리 메서드를 제공하는 불변 클래스 Boolean(String) 생성자 대신 Boolean.valueOf(String) 생성 비용이 비싼 객체 가능하다면 비싼 객체를 반복적으로 생성하지말고 정적 초기화 과정에서 직접 캐싱해두자. 예를들면 String.matches() 메서드는 내부에서 Pattern 인스턴스를..
이펙티브 자바, 아이템 4. 인스턴스화를 막으려거든 private 생성자를 사용하라 정적 멤버만 담은 유틸리티 클래스는 인스턴스로 만들어 쓰려고 설계한 게 아니다. 그러나 생성자를 명시하지 않으면 컴파일러가 자동으로 기본 생성자를 만들어 주기 때문에 private 생성자를 추가하여 클래스의 인스턴스화를 막을 수 있다. 명시적인 생성자를 추가하면 기본 생성자가 자동으로 만들어지지 않으며, 명시적인 생성자가 private이므로 클래스 바깥에서는 접근할 수 없다. 코드에 인스턴스화 방지용이라는 주석을 추가하는 것도 좋다. 생성자가 private 생성자 하나만 있는 경우에는 하위 클래스의 생성자에서 사용될 상위클래스 생성자가 없는 것이므로 상속도 막을 수 있다.
이펙티브 자바, 아이템 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라 싱글턴 : 인스턴스를 오직 하나만 생성할 수 있는 클래스 public static final 인스턴스 public class Printer { private final String name = "yoyo printer"; private final String owner = "tuna"; public static final Printer INSTANCE = new Printer(); private Printer() { } public void print(String in) { System.out.println("========================="); System.out.println("this is "+thi..
이펙티브 자바, 아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라. 생성자든 정적 팩토리 메서드든 매개변수가 많다면 적절하게 대응하기 쉽지 않다. 생성자에 매개변수가 많을 때 사용하는 방법들을 알아보았다. 점층적 생성자 패턴 필수적 매개변수만 받는 생성자부터 시작해서 선택적 매개변수 한 개씩을 늘려가면서 모든 매개변수를 받는 생성자까지 늘려가는 단순한 방식이다. public class Book { private String title; private String author; private int price; private String publisher; private String description; private String subTitle; public Book(String title, St..
이펙티브 자바, 아이템 1. 생성자 대신 정적 팩토리 메서드를 고려하라 객체를 생성해서 반환해주는 static 메서드를 이용하여 생성자의 역할을 대신한다. 정적 팩토리 메서드를 사용했을 때의 장점 이름을 가질 수 있다. 메서드 이름에 객체의 생성 목적을 담아 낼 수 있다. 호출될 때마다 인스턴스를 새로 생성하지 않아도 된다. 인스턴스를 미리 만들어 놓거나 새로 생성한 인스턴스를 캐싱하여 재활용하는 식으로 불필요한 객체 생성을 피할 수 있다. class MiddleSchool extends School { private static final MiddleSchool INSTANCE = new MiddleSchool(); private MiddleSchool() { super("middle"); } publ..