【发布时间】:2014-06-19 15:18:45
【问题描述】:
有没有办法知道 POF 流中数组的元素数量?
我需要使用 PofReader 来读取数组。但是,我不知道如何使大小与 POF 流中的元素数量相匹配。
public class BasicTypesPofSerializer implements PofSerializer {
private static final int ARRAY_SIZE = 10;
private static final int ID = 0;
private static final int BOOLEAN1 = 1;
private static final int BOOLEAN2 = 2;
private static final int BOOLEAN3 = 3;
private static final int BYTE1 = 4;
private static final int BYTE2 = 5;
private static final int BYTE3 = 6;
private static final int SHORT1 = 7;
private static final int SHORT2 = 8;
private static final int SHORT3 = 9;
private static final int INT1 = 10;
private static final int INT2 = 11;
private static final int INT3 = 12;
private static final int FLOAT1 = 13;
private static final int FLOAT2 = 14;
private static final int FLOAT3 = 15;
private static final int DOUBLE1 = 16;
private static final int DOUBLE2 = 17;
private static final int DOUBLE3 = 18;
private static final int NUMBER1 = 19;
private static final int NUMBER2 = 20;
private static final int CHAR1 = 22;
private static final int CHAR2 = 23;
private static final int CHAR3 = 24;
private static final int STRING1 = 25;
private static final int STRING2 = 26;
private static final int DATE1 = 28;
private static final int DATE2 = 29;
private static final int OBJECT1 = 31;
private static final int OBJECT2 = 32;
private static final int CLASS1 = 34;
private static final int CLASS2 = 35;
@Override
public Object deserialize(PofReader reader) throws IOException {
BasicTypes basic = new BasicTypes();
basic.number2 = (Number[]) reader.readObjectArray(NUMBER2, new Number[ARRAY_SIZE]);
basic.string2 = (String[]) reader.readObjectArray(STRING2, new String[ARRAY_SIZE]);
basic.obj2 = (Serializable[]) reader.readObjectArray(OBJECT2, new Serializable[ARRAY_SIZE]);
reader.readRemainder();
return basic;
}
}
正如您在此代码示例中所见,我有几个数组。每个元素中的元素数量可能相同也可能不同。我需要知道一种让大小与元素数量相匹配的方法,这样我就不会让元素被截断或空位。 有没有办法做到这一点?
【问题讨论】:
-
根据documentation,您甚至不必知道大小。通过例如new Number[0] 应该可以工作。
-
我传递了一个 10,并读取了一个只有 2 个元素的数组,我得到了 8 个空字段
-
您是否尝试使用新号码[0]?
-
没问题,我已将解决方案作为答案发布在下面,以便您接受。
标签: java arrays deserialization