* Base class for {@link ImmutableOffsetMap} serialization proxies. Implements most of the serialization form at logic.
*/
abstract class IOMv1<T extends ImmutableOffsetMap<?, ?>> implements Externalizable {
+ private static final long serialVersionUID = 1;
+
private ImmutableOffsetMap<?, ?> map;
IOMv1() {
values[i] = in.readObject();
}
- map = verifyNotNull(readReplace(keysBuilder.build(), values));
+ map = verifyNotNull(createInstance(keysBuilder.build(), values));
}
- final Object readReplace() {
+ abstract @NonNull T createInstance(@NonNull ImmutableList<Object> keys, @NonNull Object[] values);
+
+ final Object readResolve() {
return verifyNotNull(map);
}
-
- abstract @NonNull T readReplace(@NonNull ImmutableList<Object> keys, @NonNull Object[] values);
}
}
@Override
- Ordered<?, ?> readReplace(final ImmutableList<Object> keys, final Object[] values) {
+ Ordered<?, ?> createInstance(final ImmutableList<Object> keys, final Object[] values) {
return new Ordered<>(OffsetMapCache.orderedOffsets(keys), values);
}
}
}
@Override
- Unordered<?, ?> readReplace(final ImmutableList<Object> keys, final Object[] values) {
+ Unordered<?, ?> createInstance(final ImmutableList<Object> keys, final Object[] values) {
final var newOffsets = OffsetMapCache.unorderedOffsets(keys);
return new Unordered<>(newOffsets, OffsetMapCache.adjustedArray(newOffsets, keys, values));
}