2

I'm porting an SDK from Android to plain Java and have run into an AutoParcel annotation that I don't understand.

Here's the original class and a snippet below:

@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();
}

I am able to pretty much port everything to AutoValue without incident, except that last function, as I don't understand what it is or it's equivalent in AutoValue.

Can someone explain what this is, and what its equivalent is in AutoValue?

4

2 に答える 2

2

build アノテーションを使用すると、ビルダー パターンを使用して不変の POJO を構築できます。つまり、次のようなものです。

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

同等の注釈 (AutoParcel は Android 固有の機能、つまり Parcelable を備えた Autovalue のポートであるため、驚くことではありません)

@AutoValue.Builder

https://github.com/google/auto/tree/master/value#buildersで、より包括的なドキュメントを見つけることができるはずです。

于 2016-03-16T22:39:24.890 に答える
2

JohnWowUs のコメントが示唆するように、これは主に Eclipse の問題でした。

彼が言及したリンクはソリューションの一部に過ぎませんでしたが、プロジェクトに追加の JAR を追加する必要はありませんでした。AutoValue リポジトリの問題を利用し、特に maven-compiler-plugin を構成して、JDK1.7 をターゲットとして設定し、次のセクションを pom.xml に追加します。

<annotationProcessors>
    <annotationProcessor>com.google.auto.value.processor.AutoValueProcessor</annotationProcessor>
</annotationProcessors>
于 2016-03-17T18:43:27.787 に答える