2016-12-04 107 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来自动创建这些方法。

相关问题