240312 TIL - Reflection
DoDoBest
·2024. 3. 12. 23:59
오늘 학습한 내용
- Kotlin in Action - 6.1 널 가능성
- 내일배움캠프 2주차 개인과제 키오스크 구현
MVP 패턴을 이용해 CLI 기반의 키오스크 프로그램을 구현하고 있다.
https://github.com/DoTheBestMayB/NBC-kiosk
MutableList vs Array
관련 코드
https://github.com/rlaxodud214/CodingTest_Kotlin/commit/4dbf4f6b1c42a518a7610783f57eb7086b455368
캠프 학습 중, 다른 캠퍼분께서 보여주신 코드를 보고 학습하게 됐다.
아래 코드에서 두 변환에는 어떤 차이가 있을까?
fun main() {
val array = Array(3) { 0 }
val elements = mutableListOf<Int>(0, 0, 0)
val useArray = listOf(*array)
val useMutableList = elements.toList()
}
디컴파일된 자바 코드를 확인해보면 다음과 같다.
Arrays.copyOf 함수는 다음과 같다.
내부에 있는 copyOf 함수는 다음과 같다. Java의 reflection을 이용해 객체를 생성하고 있다.
Reflection은 런타임에 코드 속도를 느리게 만든다. 따라서 결과는 List<Int>로 동일하나, 걸리는 시간은 달라진다.
코딩테스트에서 시간 복잡도가 오래 걸린다면, 디컴파일된 코드를 확인해 reflection을 이용하는 함수를 사용하고 있는 것은 아닌지 확인해야 함을 배울 수 있었다.
Reflection이 무엇인지는 관련 Kotlin In Action 파트를 읽고, Retrofit에 대한 설명과 함께 별도의 글을 작성하겠다.
'TIL' 카테고리의 다른 글
240314 TIL (0) | 2024.03.14 |
---|---|
240313 TIL (0) | 2024.03.13 |
240311 TIL (0) | 2024.03.11 |
240309 TIL - 면접을 위한 공부를 하지 말자 (0) | 2024.03.09 |
240308 TIL (0) | 2024.03.08 |