equals는 일반 규약을 지켜 재정의하라 equals 메서드는 Object의 정보들에 대해 동등성을 비교하는 목적으로 사용한다. equals 메서드를 잘못 작성하면 잘못된 결과를 만들 수 있다. equals를 재정의하지 않는 경우 각 인스턴스가 본질적으로 고유하다 값이 아닌 동작을 개체로 표현하는 경우 (ex. Thread) 논리적 동치성(p->q, q->p)을 확인 할 필요가 없다 클라이언트가 원치 않거나 애초에 필요치 않다고 판단 할 수 있다(기본 equals로 해결). 상위클래스에서 재정의한 equals가 하위 클래스에도 적용된다. set, Map, List의 경우 Abstract(Type)의 equals를 쓴다. 클래스가 private, package-private여서 equals를 호출할 일이..
try-finally(JAVA 6) 보다는 try-with-resources(JAVA 7)를 사용하라 try-fianally를 사용할 때 보다 try-with-resources를 사용할 때 코드가 짧아지고, 예외 처리가 유용하다. try-with-resources는 try가 종료될 때 자동으로 자원을 해체해준다(AutoCloseable 구현 된 경우, close() 메소드를 호출한다) static String firstLineOfFile(String path) throws IOException{ try(BufferedReader br = new BufferReader( new FileReader(path))){ return br.readLine(); } } try(...) 안에 Reader 객체가 할당 ..