인프런 커뮤니티 질문&답변

정상훈님의 프로필 이미지
정상훈

작성한 질문수

냉동코더의 알기 쉬운 Modern Android Development 입문

Practice2C-Android App Architecture 기반 구축하기 (Repository, ViewModel, Coroutine, Livedata)

간단한 질문입니다 ㅠㅠ

작성

·

99

0

bookSearchViewModel = ViewModelProvider(this, factory)[BookSearchViewModel::class.java]

위 코드에서 [BookSearchViewModel::class.java] 부분 문법이 검색해도 안나오더라구요 ㅠBookSearchViewModel::class.java 로 형변환 하는건가요?

답변 1

1

냉동코더님의 프로필 이미지
냉동코더
지식공유자

BookSearchViewModel::class.java 에서 ::는 자바의 리플렉션을 사용한 것입니다.

리플렉션은 클래스 타입을 몰라도 그 클래스의 속성에 접근할 수 있게 해주는  API입니다. ViewModelProvider는 컴파일 타임이 아니라 런타임에 실행되어 BookSearchViewModel을 만들어야 하는데 런타임에는 BookSearchViewModel의 클래스를 알 수가 없습니다. 하지만 BookSearchViewModel::class.java를 전달해주면 리플렉션을 통해 ViewModelProvider가 BookSearchViewModel의 인스턴스를 런타임에 만들 수 있게 됩니다.

정상훈님의 프로필 이미지
정상훈
질문자

설명 감사합니다 ^^

정상훈님의 프로필 이미지
정상훈

작성한 질문수

질문하기