Java

ComparableComparable 인터페이스는 타입을 받는 인터페이스이며 메서드의 타입은 컴파일시점에 결정된다.순서를 고려해야하는 값 클래스를 작성한다면 반드시 Comparable 인터페이스를 구현하여, 인스턴스들을 쉽게 정렬, 검색, 비교 가능한 컬렉션과 어우러지도록하는게 좋다. compareTo 규약 compareTo 규악은 equals 규악과 비슷하나 compareTo 메서드는 각 필드가 동치인지 비교하는게 아닌 순서를 비교한다.compareTo는 주어진 객체의 순서를 비교하며, 주어진 객체보다 작으면 음의 정수 같으면 0 크면 양의 정수를 반환한다.만약 비교할 수 없는 타입의 객체가 주어지면 ClassCastException을 던지며 추가 규악은 아래와 같다.- Comparable을 구현한 클..
toString을 항상 재 정의하라 Object의 toString 메서드가 우리가 생성한 클래스에 적합한 문자열을 반환하는 경우는 거의 없다. 자바 문서에 Object 객체 toString 메서드를 확인해보면 결과값으로 간결한 정보를 담아 누구나 쉽게 읽을 수 있도록 해야하며 모든 서브 클래스가 재 정의하는걸 추천한다고 적혀있다. println, printf, 문자열 연결 연산자 (+), assert 구문같은 경우에는 객체를 호출할때 자동으로 toString 메서드를 호출한다. 그래서 toString 메서드를 잘 구현한 클래스는 사용하기도 편리하고 디버깅할때도 매우 유용하다. toString 정의 정적 유틸 클래스는 제외하고 실전에서는 사람 이름, 나이, 전화번호 등과 같은 객체가 가진 주요 정보들을 모..
equals를 재정의하려거든 hashCode도 재정의 해라 equals를 재정의한 클래스 모두 hashCode를 재 정의 해야한다. 재 정의 하지않으면 hashCode 일반 규약을 어기게 되는거고 HashMap이나 HashSet을 사용할 때 문제가 발생할 수 있다. 자바 문서에 Object 객체 hashCode 메서드에는 이런식으로 명시 되어있다. - equals비교에 사용되는 정보가 변경되지 않았다면, 어플리케이션 실행 중 hashCode를 몇번 호출하더라도 동일한 값을 반환 해야한다. - equlas(Object)가 두 객체를 같다고 판단하면, 두 객체의 hashCode는 똑같은 값을 반환해야 한다. - eqauls(Object)가 두 객체를 다르다고 판단했을때도 다른 hashCode를 반환 할 필요..
try-finally보다는 try-with-resources를 사용하라 자바에는 InputStream, OutputStream, BufferedReader, java.sql.connection과 같이 close 메서드를 호출하여 직접 닫아줘야하는 자원들이 많다. 하지만 이러한 자원들은 사용 후 close 메서드를 호출하지 않는다면 예측할 수 없는 성능 문제로 이어지기도 한다. 이러한 자원 중 상당수가 close 메서드가 호출되지 않았을때 방안으로 finalizer를 활용하고는 있지만 finalizer같은 경우에는 호출 시점이 불명확해 믿을만하지 못하다. try-finally 전통적으로 자원이 제대로 닫힘을 보장하는 수단으로 try-finally문을 쓰였다. 예외가 발생하거나 메서드에서 반환되는 경우를 포..
정적 팩터리 메서드 (static factory method) 클래스는 생성자와 별도로 정적 팩터리 메서드를 제공 할 수 있다. 여기서 말하는 정적 팩터리 메서드는(static factory method) 디자인 패턴에서의 팩토리 메서드 패턴과 다르다. 여기서 말하는 정적 팩터리 메서드 패턴은 생성자를 통해 객체를 생성하는게 아닌 메서드(static method)를 이용해 객체를 생성하는 방식이다. 장단점을 알아보자. 장점 1. 이름을 가질 수 있다. 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. public class ErrorResponse { String message; int status; private ErrorResponse(ErrorCode er..
dobidugi
'Java' 태그의 글 목록