首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@AutoAnnotation for Dagger 2 Multibinding教程不起作用。如何让它正常工作?

@AutoAnnotation for Dagger 2 Multibinding教程不起作用。如何让它正常工作?
EN

Stack Overflow用户
提问于 2019-10-06 17:48:57
回答 1查看 181关注 0票数 0

在提到https://dagger.dev/multibindings.html时,有一节谈到了@AutoAnnotation

代码语言:javascript
复制
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添加以下内容

代码语言:javascript
复制
    implementation 'com.google.auto.value:auto-value:1.5.2'
    annotationProcessor 'com.google.auto.value:auto-value:1.5.2'

并且还添加了

代码语言:javascript
复制
    android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-09 15:17:52

为了理解AutoAnnotation和Dagger2是如何工作的,我首先需要理解AutoValue

AutoValue sample: error: cannot find symbol class AutoValue_Animal

然后是AutoAnnotation

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

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

简而言之,AutoAnnotation是一个Java代码生成器库,它生成可用于多绑定工作等值注释键(因为Java类不像Kotlin数据类,因此需要这样的工具来使其更容易)。

谷歌的AutoValue文档给出的例子并不是开箱即用的。需要进行几次修改,例如: 1.必须公开MyComponentTest以及函数。2.测试代码不应该在AutoAnnotation文件夹中,而应该在实际的源文件夹中。3.为了让AutoAnnotation与Dagger 2协同工作,我们需要以下设置

代码语言:javascript
复制
android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true

我用https://github.com/elye/demo_android_dagger_autoannotation编写了一个示例代码

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58256068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档