Hilt - 什么是 Java 相当于 kotlin 的 "by viewmodels()" 将视图模型注入 activity?

Hilt - what is the Java equivalent to kotlin's "by viewmodels()" to inject viewmodel into activity?

我正在学习 Kotlin 教程,学习 Dagger Hilt 以进行依赖注入。教程使用

class MainActivity: AppCompatActivity() {
    private val viewModel: TestViewModel by viewModels()
}

在 MainActivity 中注入视图模型。

它需要依赖项:implementation "androidx.activity.activity-ktx:1.1.0"才能这样做。

我正在尝试学习 Java 中的刀柄,所以我不确定 Java 相当于将视图模型注入我的 activity 是什么。

这是不正确的,不起作用

@Inject
private TestViewModel testViewModel;

并使用

testViewModel = new ViewModelProvider(this).get(TestViewModel.class);

不像是依赖注入。

Java 中的 by viewModels() 相当于什么?

testViewModel = new ViewModelProvider(this).get(TestViewModel.class) 确实正是 by viewModels() 为您所做的。

您会注意到 by viewModels()new ViewModelProvder(this) 都没有传入自定义 ViewModelProvider.Factory 实例 - 那是因为它们使用默认工厂 - 由 Hilt 设置的通过 DI 正确创建 ViewModel。