Java ☕ 7

Utility 클래스의 장단점

Utility 클래스 클래스 인스턴스를 생성하지 않고도 기존 코드 블록을 재사용할 수 있는 범용 클래스 static 클래스고 Stateless로 사용하여 멀티스레드 환경에서 Thread-safe하다. 보통 final로 선언되어 상속될 수 없고, 생성자는 private으로 선언되어 초기화 가능성을 막아버리며 다른 클래스에 의해 생성될 수 없다. Utility 클래스의 장점 여러 클래스에서 공통적으로 사용되는 메서드를 모아서 관리하며 코드의 재사용성을 높인다. Utility 클래스의 단점 1. Utility Class는 근본적으로 객체지향적인 프로그래밍 기법이 아니다. Utility Class는 기능 분할에 익숙해져있는 절차적 프로그래밍에 가깝다. 2. Utility Class를 사용하는 클래스는 Utili..

Java ☕ 2024.03.23

[Effective Java] 프로젝트에 적용하기

아이템 1 생성자 대신 정적 팩터리 메서드를 고려하라 클래스는 생성자와 별도로 그 클래스의 인스턴스를 반환하는 정적 메서드를 제공할 수 있다. 정적 팩터리 메서드가 생성자보다 좋은 점 1. 이름을 가질 수 있다. 2. 호출될 때마다 인스턴스를 새로 생성하지 않아도 된다. 3. 반환 타입의 하위 타입 객체를 리턴할 수 있다. 4. 입력 매개변수에 따라 다른 클래스의 객체를 반환할 수 있다. 5.정적 팩터리 메서드를 작성하는 시점에는 반환할 객체의 클래스가 존재하지 않아도 된다. ⬇️ 장점 추가 설명 더보기 1. 생성자 자체는 생성되는 객체의 특징을 직관적으로 설명하진 않는다. 반면 정적 팩터리는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다. 2. 인스턴스를 미리 만들어 놓거나 새로 생성한 ..

Java ☕ 2024.03.05

[Effective Java] 아이템 15 클래스와 멤버의 접근 권한을 최소화하라

아이템 15 클래스와 멤버의 접근 권한을 최소화하라 프로그램 요소의 접근성은 가능한 한 최소한으로 하라. 꼭 필요한 것만 골라 최소한의 public API를 설계하자. 그 외에는 클래스, 인터페이스, 멤버가 의도치 않게 API로 공개되는 일이 없도록 해야 한다. public 클래스는 상수용 public static final 필드 외에는 어떠한 public 필드도 가져서는 안 된다. public static final 필드가 참조하는 객체가 불변인지 확인하라. ⎮프로그램 요소의 접근성은 가능한 한 최소한으로 하라. 접근성을 최소화해야 하는 이유는 정보 은닉의 장점 때문이다. [정보 은닉의 효과] 1. 시스템 개발 속도 향상 : 서로의 구현을 몰라도 되기 때문에 병렬로 개발이 가능하여 개발 속도가 빨라진다..

Java ☕ 2024.03.03

[Java] Arrays.sort()와 Collections.sort()의 시간복잡도 비교

배열을 정렬하는 Arrays.sort()와 컬렉션을 정렬하는 Collections.sort()는 각기 다른 알고리즘을 이용하여 정렬을 수행한다. 정렬에 따라 시간 초과 문제가 발생할 수도 있어 다음 내용을 숙지하고 있도록 한다. 정렬 방식 시간 복잡도 Arrays.sort() DualPivotQuicksort 평균 : O(nlog(n)) / 최악 : O(n^2) Collections.sort() TimeSort 평균, 최악 : O(nlog(n)) 최악의 경우에도 O(nlog(n))의 시간복잡도를 갖고 있는 Collections.sort()를 표준 정렬 알고리즘으로 채택하고 있다고 한다.

Java ☕ 2023.11.20

[Java] Optional이란?

Optional이란? Null이 올 수 있는 값을 감싸는 Wrapper 클래스 NullPointException을 방지할 수 있다. (NPE를 방지하기 위해 Null을 직접 검사하는 것보다 코드가 간단하다) Optional 관련 메서드 .get() Optional 객체 안의 값을 반환한다. .ofNullable() - 값이 Null일 수도 있고, 아닐 수도 있는 경우 - 값이 Null이면 빈 Optional 객체를 반환하고, Null이 아니면 특정 값을 반환한다.

Java ☕ 2023.06.19