首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在@AutoValue类中使用@AutoFactory?

如何在@AutoValue类中使用@AutoFactory?
EN

Stack Overflow用户
提问于 2017-02-02 17:51:38
回答 1查看 532关注 0票数 2

假设我有一个简单的AutoValue类:

代码语言:javascript
复制
@AutoValue abstract class Foo {
  abstract CommonDependency commonDep();
  abstract String uniqueDataPerInstance();

  static Foo create(CommonDependency commonDep, String data) {
    return new AutoValue_Foo(commonDep, data);
  }
}

现在我想要一家工厂,所以我不需要每次都要通过commonDep。如果这不是一个AutoValue类,我可以通过注释CommonDependency @Provided来使用AutoFactory。

您知道如何使这两个代码生成器很好地协同工作吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-19 16:11:49

这确实是一个非常有趣的问题,因为@AutoFactory注释只能应用于非抽象类。

错误:自动工厂不支持应用于抽象类。

对于带注释的构造函数,编译器失败后甚至没有有用的错误消息。

由于在代码生成过程中只有abstractfinal自动值类,所以我们必须对最后一个也是最后一个类进行注释。为此,您必须实现一个自动值扩展( mustBeFinal() ),并用@AutoFactory注释对类声明或最终类的构造函数进行注释。

这是另一个正在生效的问题,因为构造函数参数需要进行适当的注释。因此,需要在其中添加@Provided@Nullable或任何@Qualifier注释。这里最大的问题是,@Provided定义了@Target(PARAMETER),而使用自动值我们只定义方法。

如果您不想自己实现它,可以尝试使用auto-value-factory。我在这个过程中实现了它,看看两个自动库是如何一起工作的。

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

https://stackoverflow.com/questions/42009060

复制
相关文章

相似问题

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