들어가며 리액티브 스트림즈(Reactive Streams)에 대해 공부하고 간단하게 정리했던 포스팅이 있다. https://devfunny.tistory.com/333 Reactive Streams Reactuve Streans를 들어가기 이전 Reactive Streams 포스팅을 들어가기전, Reactive Spring의 개념에 대해 알아야한다. 포스팅 바로가기 : devfunny.tistory.com/314?category=820617 Reactive Spring / Reactive Programming Reactive devfunny.tistory.com 리액티브 프로그래밍 책을 읽다보면, 해당 내용을 계속 만나게되는데 여러번 반복하며 학습한 결과 내용을 이해하는데 어려움은 없지만 볼때마다 헷갈리..
포스팅 목록 제목 URL 아이템 1. 생성자 대신 정적 팩터리 메서드를 고려하라 https://devfunny.tistory.com/526 아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라 https://devfunny.tistory.com/527 아이템 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라 https://devfunny.tistory.com/528 아이템 4. 인스턴스화를 막으려거든 private 생성자를 사용하라 https://devfunny.tistory.com/529 아이템 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 https://devfunny.tistory.com/530 아이템 6. 불필요한 객체 생성을 피하라 https://devfunny.tis..
Comparable 인터페이스 Comparable 인터페이스는 compareTo() 메서드가 유일하다. compareTo() 메서드는 단순 동치성 비교에 더해 순서까지 비교할 수 있으며, 제네릭하다. Comparable을 구현했다는 것은 그 클래스의 인스턴스들에는 자연적인 순서(natural order)가 있음을 뜻한다. 그래서 Comparable을 구현한 객체들의 배열은 손쉽게 정렬할 수 있다. Arrays.sort(a); 자바 플랫폼 라이브러리의 모든 값 클래스와 열거타입이 Comparable을 구현했다. 알파벳, 숫자, 연대 같이 순서가 명확한 값 클래스를 작성한다면 반드시 Comparable 인터페이스를 구현하자. Comparable.java public interface Comparable { ..
Cloneable 복제해도 되는 클래스임을 명시하는 용도의 인터페이스다. Cloneable.java public interface Cloneable { // 실제로 이렇게 비어있음 } 하지만 신기한 점이 있는데, clone 메서드가 선언된 곳이 Cloneable이 아닌 Object이다. Object.java protected native Object clone() throws CloneNotSupportedException; 위 코드를 보면 clone() 메서드는 protected 접근 제한자를 가진다. 이렇게 되면 Cloneable을 구현하는 것만으로는 외부 객체에서 clone 메서드를 호출할 수 없다. 위 방법은 clone() 메서드를 오버라이드하여 public 접근제한자로 변경하여 외부 객체에서 접..