이펙티브 이펙티브 자바 8 Finalizer는 쓰지 말자. FinalizerExample Class SampleRunner Class 단점 1 실행결과에 항상 finalize가 호출되지 않는다. 즉, finalize의 호출 여부를 보장하지 않는다는 것이다. (GC의 대상이 되어도 즉시 수거해가지 않을 수 있다.) 단점 2 인스턴스 반납을 지연 시킬 수도 있다. Finalizer는 우선 순위가 낮아서 언제 실행할지 모른... 자바이펙티브이펙티브 이펙티브 자바 7 예시로 Java로 구현한 Stack의 코드를 살펴보자. size를 index로 사용하고 있다. 쌓여 있던 stack에 pop을 계속하여도 stack이 차지하는 메모리는 줄어들지 않는다. pop을 통해 스택을 꺼낸 뒤, 해당 자리를 null로 설정해 GC가 발생할 때, 메모리가 정리되도록 코드를 변경할 수 있다. 주의점 매번, 변수를 사용하고 null값으로 변경하는 번거로운 과정은 않다도 된다... 자바이펙티브이펙티브 이펙티브 자바 17 불변 클래스란 인스턴스 내부 값을 수정할 수 없는 클래스이다. 객체가 파괴되는 순간까지 절대 수정할 수 없다. (ex : String, BigInteger, BigDecimal) 이러한 불변 클래스들은 가변 클래스보다 설계하고 구현이 쉬우며, 훨씬 안전하다. 객체의 상태를 변경하는 메서드를 제공하지 않는다. 클래스를 확장할 수 없도록 한다. (기본적으로 final 선언) 모든 필드를 fina... 자바이펙티브이펙티브 이펙티브자바 정리 6 익명 클래스보다는 람다를 사용하라 타입을 명시해야 코드가 더 명확할 때를 제외하고는 람다의 모든 매개변수 타입은 생략해라 람다는 이름이 없고 문서화도 못함으로 코드 자체로 동작이 명확히 설명되지 않거나 코드 줄이 많아지면 쓰지말아야 한다 람다를 직렬화 하지 말아라 익명 클래스는 타입의 인스턴스를 만들 떄만 사용해라 람다보다는 메서드 참조를 사용해라 merge 메서드는 키, 값, 함수를 인자로... Java책이펙티브Java
이펙티브 자바 8 Finalizer는 쓰지 말자. FinalizerExample Class SampleRunner Class 단점 1 실행결과에 항상 finalize가 호출되지 않는다. 즉, finalize의 호출 여부를 보장하지 않는다는 것이다. (GC의 대상이 되어도 즉시 수거해가지 않을 수 있다.) 단점 2 인스턴스 반납을 지연 시킬 수도 있다. Finalizer는 우선 순위가 낮아서 언제 실행할지 모른... 자바이펙티브이펙티브 이펙티브 자바 7 예시로 Java로 구현한 Stack의 코드를 살펴보자. size를 index로 사용하고 있다. 쌓여 있던 stack에 pop을 계속하여도 stack이 차지하는 메모리는 줄어들지 않는다. pop을 통해 스택을 꺼낸 뒤, 해당 자리를 null로 설정해 GC가 발생할 때, 메모리가 정리되도록 코드를 변경할 수 있다. 주의점 매번, 변수를 사용하고 null값으로 변경하는 번거로운 과정은 않다도 된다... 자바이펙티브이펙티브 이펙티브 자바 17 불변 클래스란 인스턴스 내부 값을 수정할 수 없는 클래스이다. 객체가 파괴되는 순간까지 절대 수정할 수 없다. (ex : String, BigInteger, BigDecimal) 이러한 불변 클래스들은 가변 클래스보다 설계하고 구현이 쉬우며, 훨씬 안전하다. 객체의 상태를 변경하는 메서드를 제공하지 않는다. 클래스를 확장할 수 없도록 한다. (기본적으로 final 선언) 모든 필드를 fina... 자바이펙티브이펙티브 이펙티브자바 정리 6 익명 클래스보다는 람다를 사용하라 타입을 명시해야 코드가 더 명확할 때를 제외하고는 람다의 모든 매개변수 타입은 생략해라 람다는 이름이 없고 문서화도 못함으로 코드 자체로 동작이 명확히 설명되지 않거나 코드 줄이 많아지면 쓰지말아야 한다 람다를 직렬화 하지 말아라 익명 클래스는 타입의 인스턴스를 만들 떄만 사용해라 람다보다는 메서드 참조를 사용해라 merge 메서드는 키, 값, 함수를 인자로... Java책이펙티브Java