2017-12-22 15 views

답변

0

유추가 실패하지 않습니다. 메소드 서명은 요청하는 T (예 : BaseViewModel)에 대해 Class<T>을 반환 할 수 있다고 말합니다. 로

activity.bindViewModel<SomeRandomModel>() 

및 반환해야합니다 Class<SomeRandomModel>. ArchViewModel::class.javaClass<SomeRandomModel>이 아니므로 구현이 잘못되었습니다.

실제로 Kotlin 또는 Java에서 올바르게 구현하는 것은 불가능합니다. return ArchViewModel.class이 Java에서 컴파일되는 경우 원시 유형 BaseViewModel을 사용하므로 컴파일러는 형식 검사를 포기하고 오류를보고하지 않습니다.

그래서이 메서드를 수정해야 구현할 수 있습니다. 어떻게, 당신이 실제로 그것을 원하는지에 달려 있습니다.

번갈아서 return ArchViewModel::class.java as Class<T>으로 캐스팅하여 '수정'할 수 있습니다. 컴파일러는이 캐스트가 안전하지 않다고 경고합니다.