Parceler - аннотировать интерфейс с фабриками по реализации

На андроиде при использовании Parceler можно ли аннотировать интерфейс используя @Parceler и сделать это возможно @ParcelConstructor а также @ParcelFactory аннотации в классах реализации?

Цель состоит в том, чтобы избежать написания настраиваемого ParcelConverter для повторного использования общего сопоставления полей в Parceler, но кажется, что такие вещи, как implementations= аргумент @Parcel больше направлены на отображение подтипов на супертипы (а не наоборот):

@Parcel  // can this be used to serialize **all** implementations ...
public interface MyIface {

  String getProperty1();
  int getProperty2();
}

public class MyImpl implements MyIface {
  @ParcelFactory  // and can this be used to deserialize the interface?
  public static MyImpl fromParcelerValues(final String property1, final int property2) {
    ...
  }
}

Конечно, могут быть неоднозначности, если имеется несколько сопоставлений, но я не могу найти какие-либо документы, чтобы заставить эту функциональность работать даже без каких-либо двусмысленностей.

1 ответ

Решение

Вы правы, Parceler работает только с классами, помеченными как @Parcel и implementations Параметр (который сейчас устарел и вскоре будет удален из API) предназначен для чего-то другого.

Я обновлю этот ответ, если вы приведете конкретный пример того, какую проблему вы хотите решить вокруг "общего отображения поля".

Другие вопросы по тегам