serializer and deserializer need different constructor , so use static factory method to wrap . the arrayserde returned by newserializer can only used for serialization concode_field_sep Class<T> itemType concode_elem_sep Serde<T> itemSerde concode_field_sep void serialize concode_elem_sep Serde<T> getItemSerde concode_elem_sep T[] createObjectArray concode_elem_sep ArraySerde<T> newSerde concode_elem_sep T[] deserialize
ArraySerde < T > function ( Serde < T > arg0 ) { return new ArraySerde < T > ( Preconditions . checkNotNull ( arg0 ) ) ; }