DEV ℧ Developer Diary

[EffectiveJava] item54 - null이 아닌, 빈 컬렉션이나 배열을 반환하라

null 반환 코드

먼저 예시를 살펴보자 주변에서 흔히 볼 수 있는 메서드 이다.

private final List<Cheese> cheesesInStock = ...; /** * @return 매장 안의 모든 치즈 목록을 반환한다. * 단,...

[EffectiveJava] item53 - 가변인수는 신중히 사용하라

가변인수(varargs) 메서드

명시한 타입의 인수를 0개 이상 받을 수 있다.
가변인수 메서드를 호출하면, 가장 먼저 인수의 개수와 길이가 같은 배열을 만들고 인수들을 이 배열에 저장하여 가변인수 메서드에 건네준다.

가변인수

다음의 가변인수 활용 예시를 보자.

<pre...

[EffectiveJava] item52 - 다중정의(Overloading)는 신중히 사용하라

다중정의(Overloading)란 매개변수를 다르게 한다면 메소드의 이름을 같게하여 정의하는것을 말한다.

다중정의(Overloading)

먼저 예시를 살펴보자.

public class CollectionClassifier { public static String classify(Set<?> s) { return <span...

[EffectiveJava] item51 - 메서드 시그니처를 신중히 설계하라

이번 아이템에서는 API 설계 요령들을 정리한 회차이다. 이 요령들을 잘 활용하면 배우기 쉽고, 쓰기 쉬우며, 오류 가능성이 적은 API를 만들 수 있다.

메서드 이름을 신중이 짓자.

항상 표준 명명 규칙을 따라야 한다. 이해할수 있고, 같고 패키지에 속한 다른 이름들과 일관되게 짓는게 최우선 목표다.

그다음...

[Java] Jackson 역직렬화 이해하기 2: List가 LinkedHashMap이 되는 이유

이전 글에서는 Jackson ObjectMapper를 이용해 객체를 JSON으로 직렬화하고, JSON을 다시 객체로 역직렬화하는 기본 흐름을 살펴봤다.

이번 글에서는 실제로 겪었던 ClassCastException 문제를 다룬다.

FeignClient로 다른 서비스의 회원 목록을 조회하고 있었다. 응답은 정상적으로 내려왔고, data 필드에도 값이 들어 있었다. 그런데...