import 질문
334
投稿した質問数 4
안녕하세요 코틀린 실습을 하는데 아래의 함수에서
fun printObject(obj: Any): Unit = when (obj) {
is String -> println(obj.lowercase())
is Duration -> println(obj.nano)
is LocalDateTime -> println(obj.month)
else -> println("Unknown type")
}Duration 과 LocalDateTime을 import 하는게
import kotlin.time.Duration가 아니라
import java.time.Duration
import java.time.LocalDateTime왜 자바 패키지를 import하는지 궁금합니다.
回答 2
1
안녕하세요, 인프런 AI 인턴입니다. cu_bot님의 질문에 대한 답변을 찾았습니다.
질문주신 내용과 관련하여 유사한 질문에 대한 답변을 찾았고, 이는 cu_bot님의 궁금증을 해결하는 데 도움이 될 것 같습니다.
이 링크에 있는 답변에 따르면, 코틀린은 자바 플랫폼에서 실행되며, 자바의 표준 라이브러리 클래스와 상호 작용할 수 있습니다. 특히, java.time.Duration과 java.time.LocalDateTime은 자바 8 이상의 표준 라이브러리에 포함된 클래스로, 날짜와 시간을 다루는 표준 방법을 제공합니다. 코틀린은 자바의 기능을 활용할 수 있으므로, 특별한 이유가 없다면 날짜와 시간을 다루기 위해 자바의 java.time 패키지를 사용하는 것이 일반적입니다.
kotlin.time.Duration은 코틀린에 내장된 시간 관련 클래스이지만, 코틀린의 Duration 클래스와 자바의 라이브러리는 같은 개념을 다루고 있지만 구현과 사용 배경이 다를 수 있습니다. 따라서 실무에서 날짜와 시간을 다루기 위해 자바 표준 라이브러리를 사용하는 것이 일반적인 이유 중 하나가 이와 같은 상호운용성 때문입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
0
안녕하세요. cu_bot님 🙂 꼼꼼하게 강의를 보시고 질문주셔서 감사합니다!
위에 AI 인턴이 답변을 잘 남겨놨는데 추가적으로 설명을 드리겠습니다.
일단 코틀린은 자바를 기반으로 하는 언어라고 할 수 있습니다. 그래서 기존에 자바 생태계에서 만들어두었던 수많은 라이브러리를 그대로 가져다 쓸 수 있는 점이 가장 큰 장점입니다. (아무리 좋은 언어라고 해도 이런 라이브러리가 없으면 직접 다 만들어야 해서 어려움이 크지요.)
특히 말씀주신 Duration의 경우 코틀린과 자바 두군데에서 구현을 해놓았는데요(사실 저도 코를린 Duration은 이번 기회에 봤습니다^^;), 제가 만들었던 printObject 함수의 경우 Any 타입의 obj를 타입에 따라 다른 동작을 하게 하는 것이 목적이라 코틀린 Duration이나 자바 Duration 중에 어떤 것을 사용하셔도 무방합니다.
하지만 둘이 이름은 같지만 다른 클래스이기 때문에 printObject를 호출하는 쪽에서 해당하는 Duration을 파라미터로 줘야지만 동작하게 됩니다.
자바
Duration으로 파라미터가 오면printObject가 자바Duration으로 구현되었을 때에만 동작코틀린
Duration으로 파라미터가 오면printObject가 코틀린Duration으로 구현되었을 때에만 동작
혹은 아예 두가지 타입을 다 처리하는 함수로 바꿔줄 수도 있습니다.
fun printObject(obj: Any): Unit = when (obj) {
is String -> println(obj.lowercase())
is java.time.Duration -> println(obj.nano)
is kotlin.time.Duration -> println(obj.inWholeSeconds)
is LocalDateTime -> println(obj.month)
else -> println("Unknown type")
}참고로 위와 같이 이름이 같은 클래스 두개를 넣어줄 때에는 자바와 동일하게 패키지 경로를 모두 적어주어야 합니다.
AI 답변에 추가로 도움이 되는 답변이었으면 좋겠습니다 😄
언제든 추가 질문 있으시면 편하게 남겨주세요.
감사합니다. 행복한 설 연휴 되세요 🥰
다양한 관점의 코드 경험을 위해 개선하지 않은 코드
1
47
1
강의가 검은 화면으로 나옵니다.
0
48
1
histories() 응답에 PointHistory.id를 포함한 이유가 궁금합니다/
1
44
2
DI시 eager과 lazy
0
37
2
타입스크립트
0
46
1
actuator에서 health 외의 다른 URL은 404 Notfound 에러가 발생합니다.
0
47
2
SettlementTargetRepository Jquery 질문
1
48
2
부가 기능을 이벤트 핸들러로 분리하는 기준이 있을까요?
1
60
2
주사위앱 소개 및 레이아웃 설정 문제
0
59
2
엔티티의 pk 를 0으로 초기화하시는 이유가 있을까요??
1
67
2
제미니님 안녕하세요!
1
73
2
MCP 연동 인텔리제이 2.6.1
0
120
2
개념 간 격벽 분리와 목록 조회 시 발생하는 참조 구조
1
80
2
무중단 배포 / 컨테이너 이미지 관리에 주로 어떤 인프라를 활용하시나요?
0
66
1
@MockK에서 null을 할당하는 이유?
1
81
1
@RelaxedMockK로 모킹하고 save 함수를 왜 또 모킹하는지 모르겠습니다.
1
339
1
build.gradle.kts 변경시 오류가 발생합니다.
0
470
1
서비스, 컨트롤러 질문입니다.
0
359
2
실습. dto 변환해보기
1
341
1
실습. gradle update/script 강의 문의
1
334
2
IntelliJ IDEA 문의
1
266
1
PDF 안에 파일이 없습니다
1
374
2
강의교재 PDF
1
267
1
안녕하세요 질문이 있습니다.
1
364
1

