본문 바로가기

전체 글187

아이템 10. equals는 일반 규약을 지켜 재정의 하라 자바의 모든 클래스는 Object클래스를 암묵적으로 상속받고 있습니다. 따라서 어떤 클래스를 생성할 때 Object의 메서드를 오버라이드할 수 있습니다. 그 중 대표적으로 오버라이드 할 수 있는게 equals, toString, clone, hashCode, finalize등이 있습니다. equals의 경우는 직접 구현하는 경우와 구현하지 않고 Object의 equals를 그대로 사용하는 경우가 있습니다. 보통 직접 구현을 하더라도 툴의 기능을 사용해서 구현하게 됩니다. 예를 들어 롬복같은 라이브러리를 사용해서 어노테이션을 붙여서 사용하기도 합니다. 우선 언제 equals를 구현해야하는지 구현할 필요가 없는지를 먼저 구분해야 합니다. 책에서는 일단 만들지 않는게 최선이라고 말합니다. 따라서 언제 오버라이.. 2023. 2. 5.
아이템 9. try-finally 보다 try-with-resources를 사용하라 try-finally구문을 사용하는 경우 자원이 하나일 경우 try-finally를 사용하는 코드 public class TopLine { // 코드 9-1 try-finally - 더 이상 자원을 회수하는 최선의 방책이 아니다! (47쪽) static String firstLineOfFile(String path) throws IOException { BufferedReader br = new BufferedReader(new FileReader(path)); try { return br.readLine(); } finally { br.close(); } } } 위 코드가 딱히 문제가 되는건 아닙니다. BufferedReader에서 해당 path에 있는 파일을 읽고 finally에서 close로 자원을.. 2023. 2. 5.
아이템 8. finalizer와 cleaner사용을 피하라 finalizer와 cleaner는 즉시 수행된다는 보장이 없습니다. 반납할 자원이 있는 클래스는 AutoCloseable을 구현하고 클라이언트에서 close()를 호출하거나 try-with-resource를 사용해야 합니다. 참고 EffectiveJava(Joshua Bloch) https://www.inflearn.com/course/%EC%9D%B4%ED%8E%99%ED%8B%B0%EB%B8%8C-%EC%9E%90%EB%B0%94-1# 2023. 2. 5.
아이템 7. 다 쓴 객체 참조를 해제 하라 자바는 JVM에서 가비지 컬렉터가 불필요한 메모리를 알아서 정리해주지만 스택, 캐시, 리스너 또는 콜백과 관련한 자기 메모리를 직접 관리하는 클래스라면 메모리 누수에 주의해야 합니다. 그래서 메모리누수가 발생할 수 있는 경우를 살펴보고 어떻게 메모리 누수를 막을 수 있는지 살펴보겠습니다. 스택 Java로 구현한 Stack 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(Object.. 2023. 2. 5.