对象的属性在序列化输出的时候,如果序列化的属性类型就是属性定义的类型本身,则按照 final 类型的输出办法来处理
parent
5862c362f3
commit
ab14e5b94d
|
@ -13,12 +13,21 @@ public class VariableFieldInfo extends FieldInfo
|
|||
{
|
||||
private final JfireSEImpl jfireSE;
|
||||
private ClassInfo classInfo;
|
||||
private final ClassInfo firstClassInfo;
|
||||
|
||||
public VariableFieldInfo(Field field, JfireSEImpl jfireSE)
|
||||
{
|
||||
super(ReflectUtil.getClassId(field.getType()), new ValueAccessor(field));
|
||||
classInfo = jfireSE.getForSerialize(field.getType());
|
||||
this.jfireSE = jfireSE;
|
||||
if (field.getType().isInterface())
|
||||
{
|
||||
firstClassInfo = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
firstClassInfo = classInfo;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -34,12 +43,26 @@ public class VariableFieldInfo extends FieldInfo
|
|||
Class<?> objClass = obj.getClass();
|
||||
if (objClass == classInfo.getClazz())
|
||||
{
|
||||
classInfo.write(byteArray, obj);
|
||||
if (classInfo == firstClassInfo)
|
||||
{
|
||||
classInfo.writeKnownClazz(byteArray, obj);
|
||||
}
|
||||
else
|
||||
{
|
||||
classInfo.write(byteArray, obj);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
classInfo = jfireSE.getForSerialize(objClass);
|
||||
classInfo.write(byteArray, instance);
|
||||
if (classInfo == firstClassInfo)
|
||||
{
|
||||
classInfo.writeKnownClazz(byteArray, obj);
|
||||
}
|
||||
else
|
||||
{
|
||||
classInfo.write(byteArray, obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue