2017-12-22 13 views

答えて

0

型推論は失敗しません。あなたのメソッドシグネチャは、あなたが求めているTBaseViewModel)のどれに対してでも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>をキャストして「修正」することもできます。コンパイラは、このキャストが安全でないことを正しく警告します。

関連する問題