Slide 47
Slide 47 text
data class User(
val name: String,
val email: String?,
val age: Int,
val createdAt: Date
) : AutoParcelable { }
public class User implements Parcelable {
private String name;
private String email;
private int age;
private Date createdAt;
@Override
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + (email != null ? email.hashCode() : 0);
result = 31 * result + age;
result = 31 * result + (createdAt != null ? createdAt.hashCode() : 0);
return result;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
if (age != user.age) return false;
if (name != null ? !name.equals(user.name) : user.name != null) return false;
if (email != null ? !email.equals(user.email) : user.email != null) return false;
return createdAt != null ? createdAt.equals(user.createdAt) : user.createdAt == null;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", email='" + email + '\'' +
", age=" + age +
", createdAt=" + createdAt +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}
@Override
public int describeContents() { return 0; }
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.name);
dest.writeString(this.email);
dest.writeInt(this.age);
dest.writeLong(this.createdAt != null ? this.createdAt.getTime() : -1);
}
public User() {}
protected User(Parcel in) {
this.name = in.readString();
this.email = in.readString();
this.age = in.readInt();
long tmpCreatedAt = in.readLong();
this.createdAt = tmpCreatedAt == -1 ? null : new Date(tmpCreatedAt);
}
public static final Creator CREATOR = new Creator() {
@Override
public User createFromParcel(Parcel source) {return new User(source);}
@Override
public User[] newArray(int size) {return new User[size];}
};
@AutoValue
public abstract class User implements Parcelable {
public 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();
}
}