본문 바로가기

Languages14

배열보다는 리스트를 사용하라 최근 [이펙티브 자바]를 읽으면서 배열보다 리스트를 주로 사용해 온 이유에 대해 다시 생각해 보게 되었고 이 경험을 공유하고자 합니다. 배열과 제네릭의 차이를 알아보고 배열보다는 제네릭을 사용할 수 있는 리스트를 사용하는 이유에 대해 다뤄보겠습니다. 첫 번째 이유 : 배열과 제네릭의 공변성과 불공변성자바에서 배열은 공변성을 가지고, 제네릭은 불공변성을 가진다는 차이가 있습니다.배열보다 리스트를 사용해야 하는 첫 번째 이유는 제네릭의 불공변성 덕분에 타입 안정성을 보장하기 때문입니다. 이를 이해하기위해 간단한 예로 공변성과 불공변성을 알아보겠습니다. 공변성공변성은 말 그대로 '함께 변한다' 라는 뜻으로, 이를 코드 레벨에 적용해 본다면 모든 객체의 상위 클래스인 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.
[Java] 자바21의 가상스레드 간단하게 이해하기 자바 21에 새롭게 가상스레드가 추가되었고 간단하게 가상스레드를 이해해 보기 위해 포스팅하게 되었다. 자바의 스레드가상 스레드를 이해하기 위해 먼저 기초지식인 프로세스와 스레드를 다시 정리하면 아래와 같다.프로세스 : 프로그램이 CPU 메모리 자원을 할당받아 실행 중인 상태스레드 : 프로세스 내 실행 흐름 단위. 즉, 프로세스에 소속되어 여러 코드를 동시에 실행시킬 수 있도록 하는 단위 그러면 자바코드로 스레드를 만들어서 실행시킨다면 실제로 어떻게 동작하게 되는 걸까? 자바에서 스레드를 만들어서 실행하는 코드public static void main(String[] args) throws Exception { for (int i = 0; i 코드레벨에서 스레드를 생성하게 되면 자바가 동작하고 있는 .. 2024. 5. 29.