java - Reaching static field declared in serialPersistentFields -
so xstream (v1.4.8) line
private object more ...readfield(objectstreamfield field, class type, object instance) { try { field javafield = type.getdeclaredfield(field.getname()); more here
tries reach field named "list" (field.getname() returns "list")
private static final objectstreamfield[] serialpersistentfields = { new objectstreamfield("list", virtualfilepermission[].class) }; declared in org.jboss.vfs.virtualfilepermissioncollection runs nosuchfieldexception. why that?
an objectstreamfield describes field stored in serialized stream. while default mechanism create objectstreamfield each real instance field of class, possibility override via static final objectstreamfield[] serialpersistentfields field exists purpose declare list of stream fields not match actual instance fields.
such fields can’t processed default algorithm of reading , writing field values via reflection. instead, dedicated writeobject , readobject methods required read , write stream fields , process values.
the problem here class virtualfilepermissioncollection has such mismatching field declaration, stream field named list , actual instance field named permissions, , appropriate readobject method (despite unnecessary use of reflection access field) lacks matching writeobject method. since dedicated writeobject method missing, default algorithm used , fails because, said, fields don’t match.
Comments
Post a Comment