728x90
문제 상황자바 코드를 코틀린 코드로 마이그레이션 하는 과정에서 "이거 자바 코드로 바꾸면 어떻게 되지?" 라는 의문이 들었다. 특히 상수 선언 방법이 2개인 코틀린에서 companion object, const 를 각각 사용하여 상수 선언 시둘의 결과는 같은 지, 아니면 내가 아는 것과 조금 다르게 동작할 지에 대한 의문으로 디컴파일 방법을 탐색하여 알게 되었다. Kotlin to Java 디컴파일(Decompile)이란?Kotlin 을 Java로 디컴파일 한다는 것은Kotlin으로 작성된 언어를 .class 파일로 컴파일한 다음, 다시 Java로 디컴파일을 수행한다는 것을 의미한다. 결국 Kotlin으로 작성된 코드가 Java로 보면 어떤 지 확인할 수 있기 때문에 Java -> Kotlin 마이그..
문제 상황자바 코드를 코틀린으로 마이그레이션 하는 과정 중, 상수 선언 과정에서 문제 상황을 겪게 되었다. public class SampleClass { private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"); //...}자바에서 객체를 static final을 통해 상수로 선언하는 것은 일반적으로 가능한 일이다. private const val DATE_TIME_FORMATTER: DateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss")class SampleClass(하지만 상..
문제상황 Java/Spring을 Kotlin/Spring으로 마이그레이션 하는 과정에서 Kotlin의 Lombok 사용에 어려움을 겪었다.그리고 그 이유 Lombok이 Javac의 Annotation Processing 과정에서 처리되는데, Javac보다 Kotlinc가 더 먼저 작동하여 Javac에서 Annotation Processing 과정을 통해 생성되는 코드를 Kotlin 코드에서는 알 수가 없기 때문임을 알게 되었다. 이 과정에서 Javac의 Annotation Processing을 포함한 전반적인 과정을 흝어보고 싶어 학습하여 기록해 두게 되었다. javac의 동작 과정 javac의 동작과정에 대해 자세히 파헤쳐보자. javac는 대략 아래 7가지 단계로 컴파일을 수행한다. 1. Parsi..
미션 도중 생긴 고민 💭public Cars(List carNames) { ArrayList cars = new ArrayList(); for (String carName : carNames) { cars.add(new Car(carName)); } this.cars = cars; } Cars 객체를 생성할 때, List형태의 carNames를 입력받은 뒤,For-Loop 문을 통해 cars 필드를 초기화 해주었다. 하지만 For-Loop문을 생성자 로직에 적용하니 개인적으로 생성자 로직이 지저분하다는 생각이 들었다.때문에 Stream을 사용하여 짧고 가독성있는 코드로 리팩토링하여 사용하고자 하였다. 그리고 이때 머릿속에 한가..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.