Parceler - 在实现上注释与工厂的接口
Parceler - annotate interface with factories on an implementation
在 android 上使用 Parceler 时,是否可以使用 @Parceler
注释接口并让它在实现中选择可能的 @ParcelConstructor
和 @ParcelFactory
注释 类?
目标是避免编写自定义 ParcelConverter 以在 Parceler 中重新使用通用字段映射,但似乎 implementations=
argument 到 @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) {
...
}
}
当然,如果有多个匹配的映射,可能会出现歧义,但我似乎无法找到任何有关使此功能正常工作的文档,即使没有任何歧义。
你是对的,Parceler 只在直接用 @Parcel
和 implementations
参数注释的 类 上运行(现在已经贬值,很快就会从 api) 用于其他用途。
如果您给出一个具体的例子来说明您希望在 "generic field mapping" 周围解决什么问题,我会更新这个答案。
在 android 上使用 Parceler 时,是否可以使用 @Parceler
注释接口并让它在实现中选择可能的 @ParcelConstructor
和 @ParcelFactory
注释 类?
目标是避免编写自定义 ParcelConverter 以在 Parceler 中重新使用通用字段映射,但似乎 implementations=
argument 到 @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) {
...
}
}
当然,如果有多个匹配的映射,可能会出现歧义,但我似乎无法找到任何有关使此功能正常工作的文档,即使没有任何歧义。
你是对的,Parceler 只在直接用 @Parcel
和 implementations
参数注释的 类 上运行(现在已经贬值,很快就会从 api) 用于其他用途。
如果您给出一个具体的例子来说明您希望在 "generic field mapping" 周围解决什么问题,我会更新这个答案。