작성
·
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의 인스턴스를 런타임에 만들 수 있게 됩니다.
설명 감사합니다 ^^