【问题标题】:Using AutoValue Annotations in Eclipse在 Eclipse 中使用 AutoValue 注解
【发布时间】:2016-03-16 21:42:39
【问题描述】:

我正在将一个 SDK 从 Android 移植到纯 Java 并且遇到了一个我不理解的 AutoParcel 注释。

这是original class 和下面的sn-p:

@AutoParcel.Builder
public abstract static class Builder {
    public abstract Builder id(String id);
...
    public abstract SimpleFeature build();
}

public static Builder builder() {
    return new AutoParcel_SimpleFeature.Builder();
}

除了最后一个函数外,我几乎可以毫无意外地将所有内容移植到 AutoValue,因为我不明白它是什么或它在 AutoValue 中的等价物。

有人能解释一下这是什么,以及它在 AutoValue 中的等价物是什么吗?

【问题讨论】:

    标签: java android auto-value


    【解决方案1】:

    构建注释允许您使用构建器模式构建不可变的 POJO,即类似

    SimpleFeature.builder().id("test").build()
    

    等效注解(毫不奇怪,因为 AutoParcel 是 Autovalue 的一个端口,具有 android 特定功能,即 Parcelable)

    @AutoValue.Builder
    

    您应该能够在 https://github.com/google/auto/tree/master/value#builders 找到更全面的文档

    【讨论】:

    • 我最初尝试过,但 Eclipse 建议此位置不允许使用注释。
    • 感谢您对文档的回复和指点。 Builder 对我来说是一个新的、有趣的模式。在创建公共静态类时,我仍然看到 AutoValue_SimpleFeature 无法解析为类型的错误。 Eclipse 想要从抽象类中填充所有必需的函数,但这使得 AutoValue 毫无价值。
    • 我认为问题在于您的 Eclipse 设置。我自己不使用 Eclipse,但this link 可能有助于让 AutoValue 和 Eclipse 一起工作。
    【解决方案2】:

    正如 JohnWowUs 的评论所暗示的,这主要是一个 Eclipse 问题。

    他提到的链接只是解决方案的一部分,但我不需要将更多的 JAR 放入项目中。在issue in the AutoValue repo 的帮助下,专门配置了 maven-compiler-plugin,将 JDK1.7 设置为目标,在 pom.xml 中添加了以下部分:

    <annotationProcessors>
        <annotationProcessor>com.google.auto.value.processor.AutoValueProcessor</annotationProcessor>
    </annotationProcessors>
    

    【讨论】:

      猜你喜欢
      • 2019-08-06
      • 1970-01-01
      • 1970-01-01
      • 2018-03-07
      • 2021-09-13
      • 2016-07-29
      • 2016-05-31
      • 1970-01-01
      • 2015-03-12
      相关资源
      最近更新 更多