gpt4 book ai didi

java - 如何将@AutoFactory 与@AutoValue 类一起使用?

转载 作者:行者123 更新时间:2023-11-30 10:33:52 25 4
gpt4 key购买 nike

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

@AutoValue abstract class Foo {
abstract CommonDependency commonDep();
abstract String uniqueDataPerInstance();

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

现在我想要一个工厂,这样我就不需要在每次想要 Foo 时都通过 commonDep。如果这不是 AutoValue 类,我可以通过注释 CommonDependency @Provided 简单地使用 AutoFactory。

您知道让这两个代码生成器协同工作的方法吗?

最佳答案

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

error: Auto-factory doesn't support being applied to abstract classes.

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

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

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

如果你不想自己实现,你可以尝试使用auto-value-factory .我在流程中实现了它,以查看两个自动库如何协同工作。

关于java - 如何将@AutoFactory 与@AutoValue 类一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42009060/

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