gpt4 book ai didi

java - Dagger 2 多重绑定(bind)教程的@AutoAnnotation 不起作用。如何让它发挥作用?

转载 作者:行者123 更新时间:2023-12-01 23:41:41 24 4
gpt4 key购买 nike

引用https://dagger.dev/multibindings.html ,有一节讨论 @AutoAnnotation

class MyComponentTest {
@Test void testMyComponent() {
MyComponent myComponent = DaggerMyComponent.create();
assertThat(myComponent.myKeyStringMap()
.get(createMyKey("abc", Abc.class, new int[] {1, 5, 10}))
.isEqualTo("foo");
}

@AutoAnnotation
static MyKey createMyKey(String name, Class<?> implementingClass, int[] thresholds) {
return new AutoAnnotation_MyComponentTest_createMyKey(name, implementingClass, thresholds);
}
}

不知怎的,我从来没有让它工作过。

我要添加以下内容到 gradle

    implementation 'com.google.auto.value:auto-value:1.5.2'
annotationProcessor 'com.google.auto.value:auto-value:1.5.2'

并添加

    android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true

最佳答案

要了解 AutoAnnotation 和 Dagger 2 的工作原理,首先我需要了解 AutoValue

AutoValue sample: error: cannot find symbol class AutoValue_Animal

然后是自动注释

What is @AutoAnnotation for? How could it be used?

之后,我就可以使用 AutoAnnotation 探索上面的 Dagger 2 示例。

简单来说,AutoAnnotation 是一个 Java 代码生成器库,它生成可用于多重绑定(bind)工作的值对等的 Annotation Key(因为 Java 类与 Kotlin 数据类不同,因此需要这样的工具来使其值对等)更容易)。

Google 的 AutoValue 文档给出的示例并非开箱即用。需要进行一些修改,例如1. 必须公开 MyComponentTest 以及该函数。2. AutoAnnotation 代码不应位于测试文件夹中,而应位于实际的源文件夹中。3. 为了使 AutoAnnotation 能够与 Dagger 2 配合使用,我们需要以下设置

android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true

我在 https://github.com/elye/demo_android_dagger_autoannotation 中制作了示例代码

关于java - Dagger 2 多重绑定(bind)教程的@AutoAnnotation 不起作用。如何让它发挥作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58256068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com