2016-12-04 9 views
1

これは可能ですか?それともビルダーの唯一の解決策ですか? 10個のフィールドを持つクラスを持つことは、AutoValueが機能するように、ビルダー内の10個のフィールドを複製する必要があることを意味します。または、手書きの作成機能を介してまたは私は何かを逃している?AutoValue - 公共のコンストラクタが可能です

私はちょうど

...パッケージの外に私のAutoValueクラスのオブジェクトを作成するには、ここでは簡単な例です:

@AutoValue 
public abstract class Data 
{ 
    // Can something like this be auto generated???? 
    public static Data create(String field1, String field2, ...) 
    { 
     return new AutoValue_Data(field1, field2, ...); 
    } 

    public abstract String field1(); 
    public abstract String field2(); 
    ... 

    @AutoValue.Builder 
    public abstract static class Builder { 
     // Or can I tell the builder to create setters for ALL fields 
     // automatically instead of having to declare them one by one? 
     public abstract Builder setField1(String field1); 
     public abstract Builder setField2(String field2); 
     ... 
     public abstract Data build(); 
    } 
} 
+1

ビルダーパターンを使用しない場合は、リフレクションを使用できます。 –

答えて

0

create()方法は、非表示にするには、コンストラクタの周りだけのラッパーですクラスAutoValue_Dataのような実装の詳細。すべてを自分で書きたくない場合は、これらのメソッドを自動的に作成するためのplugin for Android Studioがあります。

関連する問題