我正在实现一种 XSD 对象到 Android 上的 Parcelable 之间的映射。一切都很好,除非我有一个更复杂的 xsd 元素,其中包含一个可选元素(minOccurs='0' maxOccurs='1')。
我需要使用以下格式编写我的 bean 构造函数:
private Bean (Parcel in) {
super();
this.setId(in.readInd());
this.setComplexData((ComplexClass) in.readParcelable(ComplexClass.class
.getClassLoader()));
this.setComplexData2((ComplexClass2) in.readParcelable(ComplexClass2.class
.getClassLoader()));
}
但是这两个复杂的数据都是可选的。
当我只有一个可选数据时,我正在使用:
if(in.dataAvail() >0)
this.setComplexData((ComplexClass) in.readParcelable(ComplexClass.class
.getClassLoader()));
但如果两者都是可选的,我不能这样做。因此,我想知道是否有某种方法可以识别包裹内的对象是什么,某种方法可以检查类签名?从这个意义上说,我可以检查数据是 ComplexClass1 还是 2 并进行读取。