더블콜론 질문
303
작성한 질문수 0
안녕하세요 선생님 늘 좋은 강의 감사드립니다.
@Database(entities = arrayOf(ToDoEntity::class), version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun getDao(): ToDoDao
companion object {
val databaseName = "database"
var database: AppDatabase? = null
fun getInstance(context: Context) {
if (database == null) {
database = Room.databaseBuilder(context, AppDatabase::class.java, databaseName).build()
}
}
}
}여기서 ToDoEntity::class는 왜 뒤에 .java가 안 붙고 AppDatabase::class.java는 왜 .java가 붙어야 하나요? 그리고 ::class를 안 쓰고 ToDoEntity만 쓰면 왜 안 되는 건가요???? 답변 감사합니다.
답변 1
1
안녕하세요, 인프런 AI 인턴이에요.
더블 콜론(::)은 코틀린에서 클래스나 함수의 참조를 표현할 때 사용되는 특수한 연산자입니다.
ToDoEntity::class는 ToDoEntity 클래스의 참조를 나타냅니다. 이때 .java를 붙이지 않는 이유는 코틀린에서는 .java를 생략할 수 있는데, 코틀린 컴파일러가 자동으로 자바 클래스와 매칭시켜줍니다.
반면, AppDatabase::class.java는 AppDatabase 클래스의 자바 표현식을 나타냅니다. 이 경우 .java를 붙여서 명시적으로 자바 클래스임을 표시하는 것이 좋습니다.
또한, ToDoEntity만 쓰는 경우와 ToDoEntity::class를 사용하는 경우는 다릅니다. ToDoEntity는 인스턴스 자체를 나타내는 것이고, ToDoEntity::class는 ToDoEntity 클래스의 참조를 나타냅니다. Room.databaseBuilder() 메소드는 클래스의 참조를 인자로 받기 때문에 ToDoEntity 자체를 사용할 수 없고, ToDoEntity::class를 사용하여 ToDoEntity 클래스의 참조를 전달해야 합니다.
이렇게 사용하는 이유는 Room 라이브러리가 데이터베이스를 생성하기 위해 주어진 인자로부터 클래스의 정보를 알아내기 때문입니다.
더 궁금한 점이 있으면 언제든지 물어보세요. 좋은 하루 되세요.
안드로이드스튜디오 버전이 어떻게 되는지요?
0
108
1
스크래치 파일 Run 안되는 오류 발생
0
134
1
Git에서 다운받은 폴더가 안열리는 분들
0
137
1
TodoDao Interface 문의
0
80
1
kotlin 버전과 ksp 버전 꼭 맞추셔야 해요!!
0
458
1
아름다운 joyce님께.. runonuithread 문의
0
140
0
viewBinding 관련 질문입니다.
0
208
3
0:30초 질문입니다.
0
179
1
Locationmanager로 타입캐스팅 실패 문의
0
141
1
Todo리스트 dao 구성 시 todo 질문
0
141
1
룸 데이터베이스 구성 시 dao 에러 문의
0
171
1
버튼모양 질문 소스코드 첨부
0
147
1
레이아웃 구성할떄 저는 버튼모양이 원으로 나와요
0
171
1
싱글톤 패턴 구현중 코드가 강의와 일치하지 않습니다.
0
157
1
MainActivity 파일안에 setContencView가 없습니다..
0
203
1
room database 설치 질문
0
175
1
kts로 공부하는 학생도 있는데 갑자기 설명도 없이 kt로 설명하면..
0
318
3
mutable과 var의 차이점
0
202
1
안드로이드 스튜디오 스크래치 파일
0
278
1
추가링크는 어디에 있을까요?
0
286
1
대시보드 설정 마지막 단계 Google Play에 앱 게시
0
681
2
geoCoder.getFromLocation 에러
0
557
2
apirequest.io 로딩 현상 & 사이트 이상함
0
453
1
PrimaryKey를 Nullable하게 만드는 이유
0
271
1





