11 May 2022 EffectiveJava
Comparable을 구현할지 고려하라.
Comparable 개요
이번에는 Comparable 인터페이스의 유일무이한 메서드인 compareTo를 알아보자.
compareTo의 성격은 두 가지만 제외하면 Object의 equals와 같다.
- 단순 동치성 비교에 더해 순서까지 비교 할 수 있다.
- 제네릭 하다.
배열의 정렬에 사용하는 Arrays.sort()
또한 Comparable 인터페이스를 구현한...
09 May 2022 EffectiveJava
clone 재정의는 주의해서 진행하라.
Cloneable은 복제해도 되는 클래스임을 명시하는 용도의 믹스인 인터페이스 (mixin interface)지만, clone 메서드가 선언된 곳이 Cloneable이 아닌 Object이고, protected라는 문제점이 있다.
clone() 메서드는 원본 객체의 필드값과 동일한 값을 가지는 새로운 객체를 생성한다. Cloneable를 implements하여 사용 한다.
Cloneable의 동작방식
…
04 May 2022 DesignPattern
빌더(Builder)
객체를 생성하는 방법과 표현하는 방법을 정의하는 클래스를 별도로 분리하여, 동일한 절차에서 서로 다른 표현으로 생성할 수 있도록 제공해줍니다. 이펙티브 자바 item02 에 나온 Builder와는 다르게 좀더 방법론적으로 설명 해준다고 생각해주면 된다.
차이점을 간단하게 구분해 주자면, 이펙티브 자바의 빌더패턴의 경우 생성자에 매게변수를 받아...
28 Apr 2022 algorithmQuestion
경쟁적 전염
No.18405 경쟁적 전염
문제
NxN 크기의 시험관이 있다. 시험관은 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 바이러스가 존재할 수 있다. 모든 바이러스는 1번부터 K번까지의 바이러스 종류 중 하나에 속한다.
시험관에 존재하는 모든 바이러스는 1초마다 상, 하, 좌, 우의 방향으로 증식해 나간다....
28 Apr 2022 EffectiveJava
toString을 항상 재정의하라.
Object의 객체들을 System.out.println();
으로 감싸보자.
그러면 클래스의 해당하는 문자열을 반환하는 경우는 거의 없고 java.lang.Object@3ac3fd8b
와 같은 클래스_이름@16진수로_표현한_해시코드
를 반환 할 뿐이다.
toString의 일반 규약에 따르면 ‘간결하면서 사람이 읽기 쉬운 형태의 유익한 정보’를 반환 해야 한다.
만약 item11에서 사용한...