在PagingWithNetworkSample,在RedditActivity.kt上线68是包含另一函数调用随后的功能方括号和类型(线78):
private fun getViewModel(): SubRedditViewModel {
return ViewModelProviders.of(this, object : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
val repoTypeParam = intent.getIntExtra(KEY_REPOSITORY_TYPE, 0)
val repoType = RedditPostRepository.Type.values()[repoTypeParam]
val repo = ServiceLocator.instance(this@RedditActivity)
.getRepository(repoType)
@Suppress("UNCHECKED_CAST")
return SubRedditViewModel(repo) as T
}
})[SubRedditViewModel::class.java]
}
Run Code Online (Sandbox Code Playgroud)
这到底是做什么的?自动转换为该类型?(它不是要调用的数组/列表get)
您能否举一个有用的例子?
该代码可能看起来很奇怪,但实际上只是一种调用方式get()。这将同样有效,但更为冗长:
private fun getViewModel(): SubRedditViewModel {
return ViewModelProviders.of(this, object : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
// ...
}
}).get(SubRedditViewModel::class.java)
}
Run Code Online (Sandbox Code Playgroud)