Я использую расширение AutoValue для создания своих классов Parcelable для Android. В документации конкретно указано, что одно @AutoValue не может расширять другое: https://github.com/google/auto/blob/master/value/userguide/howto.md#inherit
Другой разработчик помогал мне с этим и предложил: «Если у вас есть общие поля, вы можете поместить их в интерфейс, который реализуют обе реализации». Я предполагаю, что это означает, что библиотека предпочитает композицию наследованию.
Признаюсь, я немного растерялся. Если бы кто-то мог предоставить простой конкретный пример простейшего способа "подкласса" класса AutoValue, это было бы признательно. Вот простой класс:
@AutoParcelGson
public abstract class User implements Parcelable {
public abstract String username();
public static User create(String username) {
return builder().username(username).build();
}
public static Builder builder() {
return new AutoParcelGson_User.Builder();
}
@AutoParcelGson.Builder
public interface Builder {
Builder username(String username);
User build();
}
}
Я хотел бы иметь еще один класс @AutoValue под названием Customer с несколькими дополнительными полями. Кроме того, @AutoParcelGson — это расширение @AutoValue, которое я использую, но это то же самое поведение.