kotlin - 如何避免使用与类型和参数相同的类
问题描述
我的项目中有一个 BaseActivity,它的工作之一是实例化 Acvities 的 ViewModel。它是这样的:
abstract class BaseActivity<VM : ViewModel>(clazz: KClass<VM>) :
AppCompatActivity() {
@Inject
protected lateinit var viewModelFactory: ViewModelProvider.Factory
protected val viewModel by lazy {
ViewModelProviders
.of(this, viewModelFactory).get(clazz.java)
}
}
然后 MyActivity 扩展它:
class MyActivity : BaseActivity<MyViewModel>(MyViewModel::class) {
...
fun doSomething() {
viewModel.someMethodSpecifToMyViewModel()
}
}
如您所见,我需要将 MyViewModel 作为类传递,因此我可以在 ViewModelProviders 上使用它,但我还需要将它作为 Type 传递,因此我的 viewModel 被强制转换为正确的 ViewModel,我可以使用它自己的方法。
这一切都很好,但是我必须将 MyViewModel 两次传递给我的 BaseActivity,这让我很困扰。
有什么方法可以让我只将它作为类型或类传递并且仍然可以正常工作吗?
解决方案
推荐阅读
- python - 如何从数据框中删除多索引级别等于 NaN(无值)的列
- python - 使用python仅在趋势和残差中分解时间序列
- forms - SAPUI5 - 读取动态创建的表单
- mysql - 将 .txt.gz 文件的目录加载到 MySQL
- bash - SVN 验证未检测到损坏的修订
- java - 如何在 Java 中将数组 20 字节大小调整为 16 字节
- c# - 将贷款+利息资本化公式的循环引用从 VBA 转换为 C#
- google-slides-api - Google Slides API - 如何通过 API 更改主题
- microsoft-graph-api - Microsoft Graph API:DELETE / PATCH 事件实例
- angular - 比较Angular 6中的日期和自动填充字段问题?