유추가 실패하지 않습니다. 메소드 서명은 요청하는 T
(예 : BaseViewModel
)에 대해 Class<T>
을 반환 할 수 있다고 말합니다. 로
activity.bindViewModel<SomeRandomModel>()
및 반환해야합니다 Class<SomeRandomModel>
. ArchViewModel::class.java
은 Class<SomeRandomModel>
이 아니므로 구현이 잘못되었습니다.
실제로 Kotlin 또는 Java에서 올바르게 구현하는 것은 불가능합니다. return ArchViewModel.class
이 Java에서 컴파일되는 경우 원시 유형 BaseViewModel
을 사용하므로 컴파일러는 형식 검사를 포기하고 오류를보고하지 않습니다.
그래서이 메서드를 수정해야 수 구현할 수 있습니다. 어떻게, 당신이 실제로 그것을 원하는지에 달려 있습니다.
번갈아서 return ArchViewModel::class.java as Class<T>
으로 캐스팅하여 '수정'할 수 있습니다. 컴파일러는이 캐스트가 안전하지 않다고 경고합니다.