abstract String name(); @Nullable public abstract String email(); public abstract int age(); public abstract Date createdAt(); public static User create(String name, String email, int age, Date createdAt) { return builder() .name(name) .email(email) .age(age) .createdAt(createdAt) .build(); } public static Builder builder() {return new AutoValue_User.Builder();} @AutoValue.Builder public abstract static class Builder { public abstract Builder name(String name); public abstract Builder email(String email); public abstract Builder age(int age); public abstract Builder createdAt(Date createdAt); public abstract User build(); } }
abstract String name(); @Nullable public abstract String email(); public abstract int age(); public abstract Date createdAt(); public static User create(String name, String email, int age, Date createdAt) { return builder() .name(name) .email(email) .age(age) .createdAt(createdAt) .build(); } public static Builder builder() {return new AutoValue_User.Builder();} @AutoValue.Builder public abstract static class Builder { public abstract Builder name(String name); public abstract Builder email(String email); public abstract Builder age(int age); public abstract Builder createdAt(Date createdAt); public abstract User build(); } }
from all properties declared in the primary constructor: • 根據你定義的 properties,⾃自動幫你產⽣生以下四種內容 • equals()/hashCode() • toString() • componentN() functions • copy()
age: Int, val createdAt: Date ) : AutoParcelable { fun updateAge(newAge: Int): User { return copy(age = newAge) } } user = user.updateAge(18); assertThat(user.getAge()).isEqualTo(18);
時,會出現以下問題: org.mockito.exceptions.base.MockitoException: Cannot mock/spy class com.example.kotlindataclass.model.xxx cannot mock/spy because : - final class