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) предназначен для чего-то другого.
Я обновлю этот ответ, если вы приведете конкретный пример того, какую проблему вы хотите решить вокруг "общего отображения поля".