학습 일지130 코틀린에서 자바 코드 사용 시 nullable과 non-nullable를 주의하자 개요요즘 자바와 같은 JVM 언어인 코틀린을 공부하고 있습니다.자바와 코틀린은 비슷한 점도 많지만 수많은 차이점도 존재하는데, 차이점 중 가장 흥미가 생긴 부분은 코틀린에서의 nullable과 non-nullable 타입이었습니다. 자바에서는 참조타입에 null을 자유롭게 담을 수 있지만, 코틀린은 null을 담을 수 있는 nullable 타입과 null을 담을 수 없는 non-nullable 타입을 완전히 다르게 취급합니다. 코틀린은 자바와 100% 호환 가능한 언어이기에 자바에서 코틀린으로 작성된 코드를 사용하거나, 코틀린에서 자바 코드를 사용할 수 있는데요.nullable 타입과 non-nullable 타입을 다르게 간주하는 코틀린의 특성으로 코틀린에서 자바 코드를 사용할 때 주의할 점이 있어 이를.. 2024. 7. 2. DIP를 적용하여 리팩토링 해보기 프로젝트 진행하면서 DIP를 적용하여 리팩토링을 한 이야기를 해보려고 합니다. 이야기에 앞서, DIP의 정의는 아래와 같습니다. 의존 역전 원칙(Dependency Inversion Principle, DIP)DIP는 객체지향 설계 원칙인 SOLID 원칙 중 하나로, 고수준 모듈은 저수준 모듈에 의존해서는 안 되며, 둘 모두 추상화에 의존해야 한다는 원칙입니다.DIP의 핵심은 구체적인 구현보다 추상화된 인터페이스나 추상 클래스에 의존하도록 설계해야 한다는 것인데요.DIP를 적용한다면 객체가 구체적인 구현에 의존하지 않고 인터페이스나 추상화에 의존하여 구현의 변경이나 교체를 간편할 수 있기에 전체적인 시스템의 유연성을 높이고, 변경에 더 잘 적응할 수 있어 코드의 의존성 관리를 개선하고, 변화에 유연하게 .. 2024. 6. 21. @RequiredArgsConstructor와 @AllArgsConstructor 비교하기 문제 상황프로젝트 진행 중에 Mapstruct 라이브러리를 사용하여 DTO를 자동 매핑하는 과정에서 문제를 겪었습니다.기존에는 무조건 DTO 필드를 @AllArgsConstructor로 설정했었는데, DTO의 특성상 불변 객체로 만드는 것이 더 적합하다고 판단해서 @RequiredArgsConstructor로 변경했었습니다.하지만 @RequiredArgsConstructor로 설정된 클래스의 필드가 누락되어 매핑되지 않는 오류가 발생했고 해결책을 찾기 위해 DTO 클래스를 디컴파일해 본 결과, 문제의 원인을 찾을 수 있었습니다. Lombok 어노테이션 비교Lombok의 @RequiredArgsConstructor와 @AllArgsConstructor는 각각 생성자를 자동으로 생성해주는 편리한 기능을 제공.. 2024. 6. 14. [Java] 자바21의 가상스레드 간단하게 이해하기 자바 21에 새롭게 가상스레드가 추가되었고 간단하게 가상스레드를 이해해 보기 위해 포스팅하게 되었다. 자바의 스레드가상 스레드를 이해하기 위해 먼저 기초지식인 프로세스와 스레드를 다시 정리하면 아래와 같다.프로세스 : 프로그램이 CPU 메모리 자원을 할당받아 실행 중인 상태스레드 : 프로세스 내 실행 흐름 단위. 즉, 프로세스에 소속되어 여러 코드를 동시에 실행시킬 수 있도록 하는 단위 그러면 자바코드로 스레드를 만들어서 실행시킨다면 실제로 어떻게 동작하게 되는 걸까? 자바에서 스레드를 만들어서 실행하는 코드public static void main(String[] args) throws Exception { for (int i = 0; i 코드레벨에서 스레드를 생성하게 되면 자바가 동작하고 있는 .. 2024. 5. 29. 이전 1 2 3 4 5 6 7 8 ··· 33 다음