Languages15 자바 8에서 Arrays.asList() 를 완벽한 불변리스트로 사용하기 회사에서 운영 중인 서비스는 자바 8 버전을 사용하고 있습니다.때문에 정적 리스트를 생성할 때 자바 9에서 추가된 List.of()를 사용하지 못하고, 대신 Arrays.asList()를 사용하고 있는데요.하지만 완벽한 불변을 보장하는 List.of()와 달리 Arrays.asList()는 완벽한 불변을 지원하지 않습니다.자바 8에서 List.of()를 대체할 수 있는 수준으로 Arrays.asList()를 완벽한 불변 리스트로 만드는 방법을 공유하고자 합니다. Arrays.asList()를 불변 리스트로 만들기에 앞서 Arrays.asList()의 기본동작을 보며 완벽한 불변 리스트가 아닌지 살펴보겠습니다. 1. Arrays.asList()와 List.of()의 기본동작Arrays.asList()의 동.. 2025. 1. 27. 배열보다는 리스트를 사용하라 최근 [이펙티브 자바]를 읽으면서 배열보다 리스트를 주로 사용해 온 이유에 대해 다시 생각해 보게 되었고 이 경험을 공유하고자 합니다. 배열과 제네릭의 차이를 알아보고 배열보다는 제네릭을 사용할 수 있는 리스트를 사용하는 이유에 대해 다뤄보겠습니다. 첫 번째 이유 : 배열과 제네릭의 공변성과 불공변성자바에서 배열은 공변성을 가지고, 제네릭은 불공변성을 가진다는 차이가 있습니다.배열보다 리스트를 사용해야 하는 첫 번째 이유는 제네릭의 불공변성 덕분에 타입 안정성을 보장하기 때문입니다. 이를 이해하기위해 간단한 예로 공변성과 불공변성을 알아보겠습니다. 공변성공변성은 말 그대로 '함께 변한다' 라는 뜻으로, 이를 코드 레벨에 적용해 본다면 모든 객체의 상위 클래스인 Object가 있고 하위 클래스인 Integ.. 2024. 9. 27. 스프링+코틀린에서 @Valid이 동작하지 않는 경우 문제 상황스프링으로 구현한 API 서버를 코틀린으로 마이그레이션하는 작업을 진행 중 Controller에 적용된 @Valid 어노테이션이 동작하지 않는 상황이 생겼습니다. 아래는 @Valid 어노테이션을 통해 유효성 검증이 정상 동작하는 자바 소스코드 입니다. 자바 코드@RestController@RequiredArgsConstructorpublic class MemberController extends BaseResource { private final MemberSignupService memberSignupService; @PostMapping(value = "/members", headers = X_API_VERSION) public ResponseEntity> signu.. 2024. 7. 9. 코틀린에서 자바 코드 사용 시 nullable과 non-nullable를 주의하자 개요요즘 자바와 같은 JVM 언어인 코틀린을 공부하고 있습니다.자바와 코틀린은 비슷한 점도 많지만 수많은 차이점도 존재하는데, 차이점 중 가장 흥미가 생긴 부분은 코틀린에서의 nullable과 non-nullable 타입이었습니다. 자바에서는 참조타입에 null을 자유롭게 담을 수 있지만, 코틀린은 null을 담을 수 있는 nullable 타입과 null을 담을 수 없는 non-nullable 타입을 완전히 다르게 취급합니다. 코틀린은 자바와 100% 호환 가능한 언어이기에 자바에서 코틀린으로 작성된 코드를 사용하거나, 코틀린에서 자바 코드를 사용할 수 있는데요.nullable 타입과 non-nullable 타입을 다르게 간주하는 코틀린의 특성으로 코틀린에서 자바 코드를 사용할 때 주의할 점이 있어 이를.. 2024. 7. 2. 이전 1 2 3 4 다음