2016-12-04 84 views
1

這可能嗎?或者是建造者的唯一解決方案?擁有10個字段的類將意味着必須複製構建器中的10個字段,以便AutoValue有效。或者通過手動編寫的創建功能?或者我錯過了什麼?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來自動創建這些方法。

相關問題