StreamCodec.java
net.minecraft.network.codec.StreamCodec
信息
- 全限定名:net.minecraft.network.codec.StreamCodec
- 类型:public interface
- 包:net.minecraft.network.codec
- 源码路径:src/main/java/net/minecraft/network/codec/StreamCodec.java
- 起始行号:L21
- 继承:StreamEncoder<B,V>, StreamDecoder<B,V>
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
net.minecraft.network.codec.StreamCodec.CodecOperation- 类型:
interface - 修饰符:
public - 源码定位:
L638 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
static <B,V> StreamCodec<B,V> of(StreamEncoder<B,V> encoder, StreamDecoder<B,V> decoder) @ L22
- 方法名:of
- 源码定位:L22
- 返回类型:<B,V> StreamCodec<B,V>
- 修饰符:static
参数:
- encoder: StreamEncoder<B,V>
- decoder: StreamDecoder<B,V>
说明:
TODO
static <B,V> StreamCodec<B,V> ofMember(StreamMemberEncoder<B,V> encoder, StreamDecoder<B,V> decoder) @ L36
- 方法名:ofMember
- 源码定位:L36
- 返回类型:<B,V> StreamCodec<B,V>
- 修饰符:static
参数:
- encoder: StreamMemberEncoder<B,V>
- decoder: StreamDecoder<B,V>
说明:
TODO
static <B,V> StreamCodec<B,V> unit(V instance) @ L50
- 方法名:unit
- 源码定位:L50
- 返回类型:<B,V> StreamCodec<B,V>
- 修饰符:static
参数:
- instance: V
说明:
TODO
default <O> StreamCodec<B,O> apply(StreamCodec.CodecOperation<B,V,O> operation) @ L66
- 方法名:apply
- 源码定位:L66
- 返回类型:
StreamCodec<B,O> - 修饰符:default
参数:
- operation: StreamCodec.CodecOperation<B,V,O>
说明:
TODO
default <O> StreamCodec<B,O> map(Function<?super V,?extends O> to, Function<?super O,?extends V> from) @ L70
- 方法名:map
- 源码定位:L70
- 返回类型:
StreamCodec<B,O> - 修饰符:default
参数:
- to: Function<?super V,?extends O>
- from: Function<?super O,?extends V>
说明:
TODO
default <O extends ByteBuf> StreamCodec<O,V> mapStream(Function<O,?extends B> operation) @ L88
- 方法名:mapStream
- 源码定位:L88
- 返回类型:
StreamCodec<O,V> - 修饰符:default
参数:
- operation: Function<O,?extends B>
说明:
TODO
default <U> StreamCodec<B,U> dispatch(Function<?super U,?extends V> type, Function<?super V,?extends StreamCodec<?super B,?extends U>> codec) @ L106
- 方法名:dispatch
- 源码定位:L106
- 返回类型: StreamCodec<B,U>
- 修饰符:default
参数:
- type: Function<?super U,?extends V>
- codec: Function<?super V,?extends StreamCodec<?super B,?extends U>>
说明:
TODO
static <B,C,T1> StreamCodec<B,C> composite(StreamCodec<?super B,T1> codec1, Function<C,T1> getter1, Function<T1,C> constructor) @ L129
- 方法名:composite
- 源码定位:L129
- 返回类型:<B,C,T1> StreamCodec<B,C>
- 修饰符:static
参数:
- codec1: StreamCodec<?super B,T1>
- getter1: Function<C,T1>
- constructor: Function<T1,C>
说明:
TODO
static <B,C,T1,T2> StreamCodec<B,C> composite(StreamCodec<?super B,T1> codec1, Function<C,T1> getter1, StreamCodec<?super B,T2> codec2, Function<C,T2> getter2, BiFunction<T1,T2,C> constructor) @ L144
- 方法名:composite
- 源码定位:L144
- 返回类型:<B,C,T1,T2> StreamCodec<B,C>
- 修饰符:static
参数:
- codec1: StreamCodec<?super B,T1>
- getter1: Function<C,T1>
- codec2: StreamCodec<?super B,T2>
- getter2: Function<C,T2>
- constructor: BiFunction<T1,T2,C>
说明:
TODO
static <B,C,T1,T2,T3> StreamCodec<B,C> composite(StreamCodec<?super B,T1> codec1, Function<C,T1> getter1, StreamCodec<?super B,T2> codec2, Function<C,T2> getter2, StreamCodec<?super B,T3> codec3, Function<C,T3> getter3, Function3<T1,T2,T3,C> constructor) @ L167
- 方法名:composite
- 源码定位:L167
- 返回类型:<B,C,T1,T2,T3> StreamCodec<B,C>
- 修饰符:static
参数:
- codec1: StreamCodec<?super B,T1>
- getter1: Function<C,T1>
- codec2: StreamCodec<?super B,T2>
- getter2: Function<C,T2>
- codec3: StreamCodec<?super B,T3>
- getter3: Function<C,T3>
- constructor: Function3<T1,T2,T3,C>
说明:
TODO
static <B,C,T1,T2,T3,T4> StreamCodec<B,C> composite(StreamCodec<?super B,T1> codec1, Function<C,T1> getter1, StreamCodec<?super B,T2> codec2, Function<C,T2> getter2, StreamCodec<?super B,T3> codec3, Function<C,T3> getter3, StreamCodec<?super B,T4> codec4, Function<C,T4> getter4, Function4<T1,T2,T3,T4,C> constructor) @ L194
- 方法名:composite
- 源码定位:L194
- 返回类型:<B,C,T1,T2,T3,T4> StreamCodec<B,C>
- 修饰符:static
参数:
- codec1: StreamCodec<?super B,T1>
- getter1: Function<C,T1>
- codec2: StreamCodec<?super B,T2>
- getter2: Function<C,T2>
- codec3: StreamCodec<?super B,T3>
- getter3: Function<C,T3>
- codec4: StreamCodec<?super B,T4>
- getter4: Function<C,T4>
- constructor: Function4<T1,T2,T3,T4,C>
说明:
TODO
static <B,C,T1,T2,T3,T4,T5> StreamCodec<B,C> composite(StreamCodec<?super B,T1> codec1, Function<C,T1> getter1, StreamCodec<?super B,T2> codec2, Function<C,T2> getter2, StreamCodec<?super B,T3> codec3, Function<C,T3> getter3, StreamCodec<?super B,T4> codec4, Function<C,T4> getter4, StreamCodec<?super B,T5> codec5, Function<C,T5> getter5, Function5<T1,T2,T3,T4,T5,C> constructor) @ L225
- 方法名:composite
- 源码定位:L225
- 返回类型:<B,C,T1,T2,T3,T4,T5> StreamCodec<B,C>
- 修饰符:static
参数:
- codec1: StreamCodec<?super B,T1>
- getter1: Function<C,T1>
- codec2: StreamCodec<?super B,T2>
- getter2: Function<C,T2>
- codec3: StreamCodec<?super B,T3>
- getter3: Function<C,T3>
- codec4: StreamCodec<?super B,T4>
- getter4: Function<C,T4>
- codec5: StreamCodec<?super B,T5>
- getter5: Function<C,T5>
- constructor: Function5<T1,T2,T3,T4,T5,C>
说明:
TODO
static <B,C,T1,T2,T3,T4,T5,T6> StreamCodec<B,C> composite(StreamCodec<?super B,T1> codec1, Function<C,T1> getter1, StreamCodec<?super B,T2> codec2, Function<C,T2> getter2, StreamCodec<?super B,T3> codec3, Function<C,T3> getter3, StreamCodec<?super B,T4> codec4, Function<C,T4> getter4, StreamCodec<?super B,T5> codec5, Function<C,T5> getter5, StreamCodec<?super B,T6> codec6, Function<C,T6> getter6, Function6<T1,T2,T3,T4,T5,T6,C> constructor) @ L260
- 方法名:composite
- 源码定位:L260
- 返回类型:<B,C,T1,T2,T3,T4,T5,T6> StreamCodec<B,C>
- 修饰符:static
参数:
- codec1: StreamCodec<?super B,T1>
- getter1: Function<C,T1>
- codec2: StreamCodec<?super B,T2>
- getter2: Function<C,T2>
- codec3: StreamCodec<?super B,T3>
- getter3: Function<C,T3>
- codec4: StreamCodec<?super B,T4>
- getter4: Function<C,T4>
- codec5: StreamCodec<?super B,T5>
- getter5: Function<C,T5>
- codec6: StreamCodec<?super B,T6>
- getter6: Function<C,T6>
- constructor: Function6<T1,T2,T3,T4,T5,T6,C>
说明:
TODO
static <B,C,T1,T2,T3,T4,T5,T6,T7> StreamCodec<B,C> composite(StreamCodec<?super B,T1> codec1, Function<C,T1> getter1, StreamCodec<?super B,T2> codec2, Function<C,T2> getter2, StreamCodec<?super B,T3> codec3, Function<C,T3> getter3, StreamCodec<?super B,T4> codec4, Function<C,T4> getter4, StreamCodec<?super B,T5> codec5, Function<C,T5> getter5, StreamCodec<?super B,T6> codec6, Function<C,T6> getter6, StreamCodec<?super B,T7> codec7, Function<C,T7> getter7, Function7<T1,T2,T3,T4,T5,T6,T7,C> constructor) @ L299
- 方法名:composite
- 源码定位:L299
- 返回类型:<B,C,T1,T2,T3,T4,T5,T6,T7> StreamCodec<B,C>
- 修饰符:static
参数:
- codec1: StreamCodec<?super B,T1>
- getter1: Function<C,T1>
- codec2: StreamCodec<?super B,T2>
- getter2: Function<C,T2>
- codec3: StreamCodec<?super B,T3>
- getter3: Function<C,T3>
- codec4: StreamCodec<?super B,T4>
- getter4: Function<C,T4>
- codec5: StreamCodec<?super B,T5>
- getter5: Function<C,T5>
- codec6: StreamCodec<?super B,T6>
- getter6: Function<C,T6>
- codec7: StreamCodec<?super B,T7>
- getter7: Function<C,T7>
- constructor: Function7<T1,T2,T3,T4,T5,T6,T7,C>
说明:
TODO
static <B,C,T1,T2,T3,T4,T5,T6,T7,T8> StreamCodec<B,C> composite(StreamCodec<?super B,T1> codec1, Function<C,T1> getter1, StreamCodec<?super B,T2> codec2, Function<C,T2> getter2, StreamCodec<?super B,T3> codec3, Function<C,T3> getter3, StreamCodec<?super B,T4> codec4, Function<C,T4> getter4, StreamCodec<?super B,T5> codec5, Function<C,T5> getter5, StreamCodec<?super B,T6> codec6, Function<C,T6> getter6, StreamCodec<?super B,T7> codec7, Function<C,T7> getter7, StreamCodec<?super B,T8> codec8, Function<C,T8> getter8, Function8<T1,T2,T3,T4,T5,T6,T7,T8,C> constructor) @ L342
- 方法名:composite
- 源码定位:L342
- 返回类型:<B,C,T1,T2,T3,T4,T5,T6,T7,T8> StreamCodec<B,C>
- 修饰符:static
参数:
- codec1: StreamCodec<?super B,T1>
- getter1: Function<C,T1>
- codec2: StreamCodec<?super B,T2>
- getter2: Function<C,T2>
- codec3: StreamCodec<?super B,T3>
- getter3: Function<C,T3>
- codec4: StreamCodec<?super B,T4>
- getter4: Function<C,T4>
- codec5: StreamCodec<?super B,T5>
- getter5: Function<C,T5>
- codec6: StreamCodec<?super B,T6>
- getter6: Function<C,T6>
- codec7: StreamCodec<?super B,T7>
- getter7: Function<C,T7>
- codec8: StreamCodec<?super B,T8>
- getter8: Function<C,T8>
- constructor: Function8<T1,T2,T3,T4,T5,T6,T7,T8,C>
说明:
TODO
static <B,C,T1,T2,T3,T4,T5,T6,T7,T8,T9> StreamCodec<B,C> composite(StreamCodec<?super B,T1> codec1, Function<C,T1> getter1, StreamCodec<?super B,T2> codec2, Function<C,T2> getter2, StreamCodec<?super B,T3> codec3, Function<C,T3> getter3, StreamCodec<?super B,T4> codec4, Function<C,T4> getter4, StreamCodec<?super B,T5> codec5, Function<C,T5> getter5, StreamCodec<?super B,T6> codec6, Function<C,T6> getter6, StreamCodec<?super B,T7> codec7, Function<C,T7> getter7, StreamCodec<?super B,T8> codec8, Function<C,T8> getter8, StreamCodec<?super B,T9> codec9, Function<C,T9> getter9, Function9<T1,T2,T3,T4,T5,T6,T7,T8,T9,C> constructor) @ L389
- 方法名:composite
- 源码定位:L389
- 返回类型:<B,C,T1,T2,T3,T4,T5,T6,T7,T8,T9> StreamCodec<B,C>
- 修饰符:static
参数:
- codec1: StreamCodec<?super B,T1>
- getter1: Function<C,T1>
- codec2: StreamCodec<?super B,T2>
- getter2: Function<C,T2>
- codec3: StreamCodec<?super B,T3>
- getter3: Function<C,T3>
- codec4: StreamCodec<?super B,T4>
- getter4: Function<C,T4>
- codec5: StreamCodec<?super B,T5>
- getter5: Function<C,T5>
- codec6: StreamCodec<?super B,T6>
- getter6: Function<C,T6>
- codec7: StreamCodec<?super B,T7>
- getter7: Function<C,T7>
- codec8: StreamCodec<?super B,T8>
- getter8: Function<C,T8>
- codec9: StreamCodec<?super B,T9>
- getter9: Function<C,T9>
- constructor: Function9<T1,T2,T3,T4,T5,T6,T7,T8,T9,C>
说明:
TODO
static <B,C,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10> StreamCodec<B,C> composite(StreamCodec<?super B,T1> codec1, Function<C,T1> getter1, StreamCodec<?super B,T2> codec2, Function<C,T2> getter2, StreamCodec<?super B,T3> codec3, Function<C,T3> getter3, StreamCodec<?super B,T4> codec4, Function<C,T4> getter4, StreamCodec<?super B,T5> codec5, Function<C,T5> getter5, StreamCodec<?super B,T6> codec6, Function<C,T6> getter6, StreamCodec<?super B,T7> codec7, Function<C,T7> getter7, StreamCodec<?super B,T8> codec8, Function<C,T8> getter8, StreamCodec<?super B,T9> codec9, Function<C,T9> getter9, StreamCodec<?super B,T10> codec10, Function<C,T10> getter10, Function10<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,C> constructor) @ L440
- 方法名:composite
- 源码定位:L440
- 返回类型:<B,C,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10> StreamCodec<B,C>
- 修饰符:static
参数:
- codec1: StreamCodec<?super B,T1>
- getter1: Function<C,T1>
- codec2: StreamCodec<?super B,T2>
- getter2: Function<C,T2>
- codec3: StreamCodec<?super B,T3>
- getter3: Function<C,T3>
- codec4: StreamCodec<?super B,T4>
- getter4: Function<C,T4>
- codec5: StreamCodec<?super B,T5>
- getter5: Function<C,T5>
- codec6: StreamCodec<?super B,T6>
- getter6: Function<C,T6>
- codec7: StreamCodec<?super B,T7>
- getter7: Function<C,T7>
- codec8: StreamCodec<?super B,T8>
- getter8: Function<C,T8>
- codec9: StreamCodec<?super B,T9>
- getter9: Function<C,T9>
- codec10: StreamCodec<?super B,T10>
- getter10: Function<C,T10>
- constructor: Function10<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,C>
说明:
TODO
static <B,C,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11> StreamCodec<B,C> composite(StreamCodec<?super B,T1> codec1, Function<C,T1> getter1, StreamCodec<?super B,T2> codec2, Function<C,T2> getter2, StreamCodec<?super B,T3> codec3, Function<C,T3> getter3, StreamCodec<?super B,T4> codec4, Function<C,T4> getter4, StreamCodec<?super B,T5> codec5, Function<C,T5> getter5, StreamCodec<?super B,T6> codec6, Function<C,T6> getter6, StreamCodec<?super B,T7> codec7, Function<C,T7> getter7, StreamCodec<?super B,T8> codec8, Function<C,T8> getter8, StreamCodec<?super B,T9> codec9, Function<C,T9> getter9, StreamCodec<?super B,T10> codec10, Function<C,T10> getter10, StreamCodec<?super B,T11> codec11, Function<C,T11> getter11, Function11<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,C> constructor) @ L495
- 方法名:composite
- 源码定位:L495
- 返回类型:<B,C,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11> StreamCodec<B,C>
- 修饰符:static
参数:
- codec1: StreamCodec<?super B,T1>
- getter1: Function<C,T1>
- codec2: StreamCodec<?super B,T2>
- getter2: Function<C,T2>
- codec3: StreamCodec<?super B,T3>
- getter3: Function<C,T3>
- codec4: StreamCodec<?super B,T4>
- getter4: Function<C,T4>
- codec5: StreamCodec<?super B,T5>
- getter5: Function<C,T5>
- codec6: StreamCodec<?super B,T6>
- getter6: Function<C,T6>
- codec7: StreamCodec<?super B,T7>
- getter7: Function<C,T7>
- codec8: StreamCodec<?super B,T8>
- getter8: Function<C,T8>
- codec9: StreamCodec<?super B,T9>
- getter9: Function<C,T9>
- codec10: StreamCodec<?super B,T10>
- getter10: Function<C,T10>
- codec11: StreamCodec<?super B,T11>
- getter11: Function<C,T11>
- constructor: Function11<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,C>
说明:
TODO
static <B,C,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12> StreamCodec<B,C> composite(StreamCodec<?super B,T1> codec1, Function<C,T1> getter1, StreamCodec<?super B,T2> codec2, Function<C,T2> getter2, StreamCodec<?super B,T3> codec3, Function<C,T3> getter3, StreamCodec<?super B,T4> codec4, Function<C,T4> getter4, StreamCodec<?super B,T5> codec5, Function<C,T5> getter5, StreamCodec<?super B,T6> codec6, Function<C,T6> getter6, StreamCodec<?super B,T7> codec7, Function<C,T7> getter7, StreamCodec<?super B,T8> codec8, Function<C,T8> getter8, StreamCodec<?super B,T9> codec9, Function<C,T9> getter9, StreamCodec<?super B,T10> codec10, Function<C,T10> getter10, StreamCodec<?super B,T11> codec11, Function<C,T11> getter11, StreamCodec<?super B,T12> codec12, Function<C,T12> getter12, Function12<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,C> constructor) @ L554
- 方法名:composite
- 源码定位:L554
- 返回类型:<B,C,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12> StreamCodec<B,C>
- 修饰符:static
参数:
- codec1: StreamCodec<?super B,T1>
- getter1: Function<C,T1>
- codec2: StreamCodec<?super B,T2>
- getter2: Function<C,T2>
- codec3: StreamCodec<?super B,T3>
- getter3: Function<C,T3>
- codec4: StreamCodec<?super B,T4>
- getter4: Function<C,T4>
- codec5: StreamCodec<?super B,T5>
- getter5: Function<C,T5>
- codec6: StreamCodec<?super B,T6>
- getter6: Function<C,T6>
- codec7: StreamCodec<?super B,T7>
- getter7: Function<C,T7>
- codec8: StreamCodec<?super B,T8>
- getter8: Function<C,T8>
- codec9: StreamCodec<?super B,T9>
- getter9: Function<C,T9>
- codec10: StreamCodec<?super B,T10>
- getter10: Function<C,T10>
- codec11: StreamCodec<?super B,T11>
- getter11: Function<C,T11>
- codec12: StreamCodec<?super B,T12>
- getter12: Function<C,T12>
- constructor: Function12<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,C>
说明:
TODO
static <B,T> StreamCodec<B,T> recursive(UnaryOperator<StreamCodec<B,T>> factory) @ L617
- 方法名:recursive
- 源码定位:L617
- 返回类型:<B,T> StreamCodec<B,T>
- 修饰符:static
参数:
- factory: UnaryOperator<StreamCodec<B,T>>
说明:
TODO
default <S extends B> StreamCodec<S,V> cast() @ L633
- 方法名:cast
- 源码定位:L633
- 返回类型:
StreamCodec<S,V> - 修饰符:default
参数:
- 无
说明:
TODO
代码
public interface StreamCodec<B, V> extends StreamEncoder<B, V>, StreamDecoder<B, V> {
static <B, V> StreamCodec<B, V> of(StreamEncoder<B, V> encoder, StreamDecoder<B, V> decoder) {
return new StreamCodec<B, V>() {
@Override
public V decode(B input) {
return decoder.decode(input);
}
@Override
public void encode(B output, V value) {
encoder.encode(output, value);
}
};
}
static <B, V> StreamCodec<B, V> ofMember(StreamMemberEncoder<B, V> encoder, StreamDecoder<B, V> decoder) {
return new StreamCodec<B, V>() {
@Override
public V decode(B input) {
return decoder.decode(input);
}
@Override
public void encode(B output, V value) {
encoder.encode(value, output);
}
};
}
static <B, V> StreamCodec<B, V> unit(V instance) {
return new StreamCodec<B, V>() {
@Override
public V decode(B input) {
return instance;
}
@Override
public void encode(B output, V value) {
if (!value.equals(instance)) {
throw new IllegalStateException("Can't encode '" + value + "', expected '" + instance + "'");
}
}
};
}
default <O> StreamCodec<B, O> apply(StreamCodec.CodecOperation<B, V, O> operation) {
return operation.apply(this);
}
default <O> StreamCodec<B, O> map(Function<? super V, ? extends O> to, Function<? super O, ? extends V> from) {
return new StreamCodec<B, O>() {
{
Objects.requireNonNull(StreamCodec.this);
}
@Override
public O decode(B input) {
return (O)to.apply(StreamCodec.this.decode(input));
}
@Override
public void encode(B output, O value) {
StreamCodec.this.encode(output, (V)from.apply(value));
}
};
}
default <O extends ByteBuf> StreamCodec<O, V> mapStream(Function<O, ? extends B> operation) {
return new StreamCodec<O, V>() {
{
Objects.requireNonNull(StreamCodec.this);
}
public V decode(O input) {
B wrappedStream = (B)operation.apply(input);
return StreamCodec.this.decode(wrappedStream);
}
public void encode(O output, V value) {
B wrappedStream = (B)operation.apply(output);
StreamCodec.this.encode(wrappedStream, value);
}
};
}
default <U> StreamCodec<B, U> dispatch(Function<? super U, ? extends V> type, Function<? super V, ? extends StreamCodec<? super B, ? extends U>> codec) {
return new StreamCodec<B, U>() {
{
Objects.requireNonNull(StreamCodec.this);
}
@Override
public U decode(B input) {
V key = StreamCodec.this.decode(input);
StreamCodec<? super B, ? extends U> valueCodec = (StreamCodec<? super B, ? extends U>)codec.apply(key);
return (U)valueCodec.decode(input);
}
@Override
public void encode(B output, U value) {
V key = (V)type.apply(value);
StreamCodec<B, U> valueCodec = (StreamCodec<B, U>)codec.apply(key);
StreamCodec.this.encode(output, key);
valueCodec.encode(output, value);
}
};
}
static <B, C, T1> StreamCodec<B, C> composite(StreamCodec<? super B, T1> codec1, Function<C, T1> getter1, Function<T1, C> constructor) {
return new StreamCodec<B, C>() {
@Override
public C decode(B input) {
T1 v1 = codec1.decode(input);
return constructor.apply(v1);
}
@Override
public void encode(B output, C value) {
codec1.encode(output, getter1.apply(value));
}
};
}
static <B, C, T1, T2> StreamCodec<B, C> composite(
StreamCodec<? super B, T1> codec1,
Function<C, T1> getter1,
StreamCodec<? super B, T2> codec2,
Function<C, T2> getter2,
BiFunction<T1, T2, C> constructor
) {
return new StreamCodec<B, C>() {
@Override
public C decode(B input) {
T1 v1 = codec1.decode(input);
T2 v2 = codec2.decode(input);
return constructor.apply(v1, v2);
}
@Override
public void encode(B output, C value) {
codec1.encode(output, getter1.apply(value));
codec2.encode(output, getter2.apply(value));
}
};
}
static <B, C, T1, T2, T3> StreamCodec<B, C> composite(
StreamCodec<? super B, T1> codec1,
Function<C, T1> getter1,
StreamCodec<? super B, T2> codec2,
Function<C, T2> getter2,
StreamCodec<? super B, T3> codec3,
Function<C, T3> getter3,
Function3<T1, T2, T3, C> constructor
) {
return new StreamCodec<B, C>() {
@Override
public C decode(B input) {
T1 v1 = codec1.decode(input);
T2 v2 = codec2.decode(input);
T3 v3 = codec3.decode(input);
return constructor.apply(v1, v2, v3);
}
@Override
public void encode(B output, C value) {
codec1.encode(output, getter1.apply(value));
codec2.encode(output, getter2.apply(value));
codec3.encode(output, getter3.apply(value));
}
};
}
static <B, C, T1, T2, T3, T4> StreamCodec<B, C> composite(
StreamCodec<? super B, T1> codec1,
Function<C, T1> getter1,
StreamCodec<? super B, T2> codec2,
Function<C, T2> getter2,
StreamCodec<? super B, T3> codec3,
Function<C, T3> getter3,
StreamCodec<? super B, T4> codec4,
Function<C, T4> getter4,
Function4<T1, T2, T3, T4, C> constructor
) {
return new StreamCodec<B, C>() {
@Override
public C decode(B input) {
T1 v1 = codec1.decode(input);
T2 v2 = codec2.decode(input);
T3 v3 = codec3.decode(input);
T4 v4 = codec4.decode(input);
return constructor.apply(v1, v2, v3, v4);
}
@Override
public void encode(B output, C value) {
codec1.encode(output, getter1.apply(value));
codec2.encode(output, getter2.apply(value));
codec3.encode(output, getter3.apply(value));
codec4.encode(output, getter4.apply(value));
}
};
}
static <B, C, T1, T2, T3, T4, T5> StreamCodec<B, C> composite(
StreamCodec<? super B, T1> codec1,
Function<C, T1> getter1,
StreamCodec<? super B, T2> codec2,
Function<C, T2> getter2,
StreamCodec<? super B, T3> codec3,
Function<C, T3> getter3,
StreamCodec<? super B, T4> codec4,
Function<C, T4> getter4,
StreamCodec<? super B, T5> codec5,
Function<C, T5> getter5,
Function5<T1, T2, T3, T4, T5, C> constructor
) {
return new StreamCodec<B, C>() {
@Override
public C decode(B input) {
T1 v1 = codec1.decode(input);
T2 v2 = codec2.decode(input);
T3 v3 = codec3.decode(input);
T4 v4 = codec4.decode(input);
T5 v5 = codec5.decode(input);
return constructor.apply(v1, v2, v3, v4, v5);
}
@Override
public void encode(B output, C value) {
codec1.encode(output, getter1.apply(value));
codec2.encode(output, getter2.apply(value));
codec3.encode(output, getter3.apply(value));
codec4.encode(output, getter4.apply(value));
codec5.encode(output, getter5.apply(value));
}
};
}
static <B, C, T1, T2, T3, T4, T5, T6> StreamCodec<B, C> composite(
StreamCodec<? super B, T1> codec1,
Function<C, T1> getter1,
StreamCodec<? super B, T2> codec2,
Function<C, T2> getter2,
StreamCodec<? super B, T3> codec3,
Function<C, T3> getter3,
StreamCodec<? super B, T4> codec4,
Function<C, T4> getter4,
StreamCodec<? super B, T5> codec5,
Function<C, T5> getter5,
StreamCodec<? super B, T6> codec6,
Function<C, T6> getter6,
Function6<T1, T2, T3, T4, T5, T6, C> constructor
) {
return new StreamCodec<B, C>() {
@Override
public C decode(B input) {
T1 v1 = codec1.decode(input);
T2 v2 = codec2.decode(input);
T3 v3 = codec3.decode(input);
T4 v4 = codec4.decode(input);
T5 v5 = codec5.decode(input);
T6 v6 = codec6.decode(input);
return constructor.apply(v1, v2, v3, v4, v5, v6);
}
@Override
public void encode(B output, C value) {
codec1.encode(output, getter1.apply(value));
codec2.encode(output, getter2.apply(value));
codec3.encode(output, getter3.apply(value));
codec4.encode(output, getter4.apply(value));
codec5.encode(output, getter5.apply(value));
codec6.encode(output, getter6.apply(value));
}
};
}
static <B, C, T1, T2, T3, T4, T5, T6, T7> StreamCodec<B, C> composite(
StreamCodec<? super B, T1> codec1,
Function<C, T1> getter1,
StreamCodec<? super B, T2> codec2,
Function<C, T2> getter2,
StreamCodec<? super B, T3> codec3,
Function<C, T3> getter3,
StreamCodec<? super B, T4> codec4,
Function<C, T4> getter4,
StreamCodec<? super B, T5> codec5,
Function<C, T5> getter5,
StreamCodec<? super B, T6> codec6,
Function<C, T6> getter6,
StreamCodec<? super B, T7> codec7,
Function<C, T7> getter7,
Function7<T1, T2, T3, T4, T5, T6, T7, C> constructor
) {
return new StreamCodec<B, C>() {
@Override
public C decode(B input) {
T1 v1 = codec1.decode(input);
T2 v2 = codec2.decode(input);
T3 v3 = codec3.decode(input);
T4 v4 = codec4.decode(input);
T5 v5 = codec5.decode(input);
T6 v6 = codec6.decode(input);
T7 v7 = codec7.decode(input);
return constructor.apply(v1, v2, v3, v4, v5, v6, v7);
}
@Override
public void encode(B output, C value) {
codec1.encode(output, getter1.apply(value));
codec2.encode(output, getter2.apply(value));
codec3.encode(output, getter3.apply(value));
codec4.encode(output, getter4.apply(value));
codec5.encode(output, getter5.apply(value));
codec6.encode(output, getter6.apply(value));
codec7.encode(output, getter7.apply(value));
}
};
}
static <B, C, T1, T2, T3, T4, T5, T6, T7, T8> StreamCodec<B, C> composite(
StreamCodec<? super B, T1> codec1,
Function<C, T1> getter1,
StreamCodec<? super B, T2> codec2,
Function<C, T2> getter2,
StreamCodec<? super B, T3> codec3,
Function<C, T3> getter3,
StreamCodec<? super B, T4> codec4,
Function<C, T4> getter4,
StreamCodec<? super B, T5> codec5,
Function<C, T5> getter5,
StreamCodec<? super B, T6> codec6,
Function<C, T6> getter6,
StreamCodec<? super B, T7> codec7,
Function<C, T7> getter7,
StreamCodec<? super B, T8> codec8,
Function<C, T8> getter8,
Function8<T1, T2, T3, T4, T5, T6, T7, T8, C> constructor
) {
return new StreamCodec<B, C>() {
@Override
public C decode(B input) {
T1 v1 = codec1.decode(input);
T2 v2 = codec2.decode(input);
T3 v3 = codec3.decode(input);
T4 v4 = codec4.decode(input);
T5 v5 = codec5.decode(input);
T6 v6 = codec6.decode(input);
T7 v7 = codec7.decode(input);
T8 v8 = codec8.decode(input);
return constructor.apply(v1, v2, v3, v4, v5, v6, v7, v8);
}
@Override
public void encode(B output, C value) {
codec1.encode(output, getter1.apply(value));
codec2.encode(output, getter2.apply(value));
codec3.encode(output, getter3.apply(value));
codec4.encode(output, getter4.apply(value));
codec5.encode(output, getter5.apply(value));
codec6.encode(output, getter6.apply(value));
codec7.encode(output, getter7.apply(value));
codec8.encode(output, getter8.apply(value));
}
};
}
static <B, C, T1, T2, T3, T4, T5, T6, T7, T8, T9> StreamCodec<B, C> composite(
StreamCodec<? super B, T1> codec1,
Function<C, T1> getter1,
StreamCodec<? super B, T2> codec2,
Function<C, T2> getter2,
StreamCodec<? super B, T3> codec3,
Function<C, T3> getter3,
StreamCodec<? super B, T4> codec4,
Function<C, T4> getter4,
StreamCodec<? super B, T5> codec5,
Function<C, T5> getter5,
StreamCodec<? super B, T6> codec6,
Function<C, T6> getter6,
StreamCodec<? super B, T7> codec7,
Function<C, T7> getter7,
StreamCodec<? super B, T8> codec8,
Function<C, T8> getter8,
StreamCodec<? super B, T9> codec9,
Function<C, T9> getter9,
Function9<T1, T2, T3, T4, T5, T6, T7, T8, T9, C> constructor
) {
return new StreamCodec<B, C>() {
@Override
public C decode(B input) {
T1 v1 = codec1.decode(input);
T2 v2 = codec2.decode(input);
T3 v3 = codec3.decode(input);
T4 v4 = codec4.decode(input);
T5 v5 = codec5.decode(input);
T6 v6 = codec6.decode(input);
T7 v7 = codec7.decode(input);
T8 v8 = codec8.decode(input);
T9 v9 = codec9.decode(input);
return constructor.apply(v1, v2, v3, v4, v5, v6, v7, v8, v9);
}
@Override
public void encode(B output, C value) {
codec1.encode(output, getter1.apply(value));
codec2.encode(output, getter2.apply(value));
codec3.encode(output, getter3.apply(value));
codec4.encode(output, getter4.apply(value));
codec5.encode(output, getter5.apply(value));
codec6.encode(output, getter6.apply(value));
codec7.encode(output, getter7.apply(value));
codec8.encode(output, getter8.apply(value));
codec9.encode(output, getter9.apply(value));
}
};
}
static <B, C, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> StreamCodec<B, C> composite(
StreamCodec<? super B, T1> codec1,
Function<C, T1> getter1,
StreamCodec<? super B, T2> codec2,
Function<C, T2> getter2,
StreamCodec<? super B, T3> codec3,
Function<C, T3> getter3,
StreamCodec<? super B, T4> codec4,
Function<C, T4> getter4,
StreamCodec<? super B, T5> codec5,
Function<C, T5> getter5,
StreamCodec<? super B, T6> codec6,
Function<C, T6> getter6,
StreamCodec<? super B, T7> codec7,
Function<C, T7> getter7,
StreamCodec<? super B, T8> codec8,
Function<C, T8> getter8,
StreamCodec<? super B, T9> codec9,
Function<C, T9> getter9,
StreamCodec<? super B, T10> codec10,
Function<C, T10> getter10,
Function10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, C> constructor
) {
return new StreamCodec<B, C>() {
@Override
public C decode(B input) {
T1 v1 = codec1.decode(input);
T2 v2 = codec2.decode(input);
T3 v3 = codec3.decode(input);
T4 v4 = codec4.decode(input);
T5 v5 = codec5.decode(input);
T6 v6 = codec6.decode(input);
T7 v7 = codec7.decode(input);
T8 v8 = codec8.decode(input);
T9 v9 = codec9.decode(input);
T10 v10 = codec10.decode(input);
return constructor.apply(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10);
}
@Override
public void encode(B output, C value) {
codec1.encode(output, getter1.apply(value));
codec2.encode(output, getter2.apply(value));
codec3.encode(output, getter3.apply(value));
codec4.encode(output, getter4.apply(value));
codec5.encode(output, getter5.apply(value));
codec6.encode(output, getter6.apply(value));
codec7.encode(output, getter7.apply(value));
codec8.encode(output, getter8.apply(value));
codec9.encode(output, getter9.apply(value));
codec10.encode(output, getter10.apply(value));
}
};
}
static <B, C, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> StreamCodec<B, C> composite(
StreamCodec<? super B, T1> codec1,
Function<C, T1> getter1,
StreamCodec<? super B, T2> codec2,
Function<C, T2> getter2,
StreamCodec<? super B, T3> codec3,
Function<C, T3> getter3,
StreamCodec<? super B, T4> codec4,
Function<C, T4> getter4,
StreamCodec<? super B, T5> codec5,
Function<C, T5> getter5,
StreamCodec<? super B, T6> codec6,
Function<C, T6> getter6,
StreamCodec<? super B, T7> codec7,
Function<C, T7> getter7,
StreamCodec<? super B, T8> codec8,
Function<C, T8> getter8,
StreamCodec<? super B, T9> codec9,
Function<C, T9> getter9,
StreamCodec<? super B, T10> codec10,
Function<C, T10> getter10,
StreamCodec<? super B, T11> codec11,
Function<C, T11> getter11,
Function11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, C> constructor
) {
return new StreamCodec<B, C>() {
@Override
public C decode(B input) {
T1 v1 = codec1.decode(input);
T2 v2 = codec2.decode(input);
T3 v3 = codec3.decode(input);
T4 v4 = codec4.decode(input);
T5 v5 = codec5.decode(input);
T6 v6 = codec6.decode(input);
T7 v7 = codec7.decode(input);
T8 v8 = codec8.decode(input);
T9 v9 = codec9.decode(input);
T10 v10 = codec10.decode(input);
T11 v11 = codec11.decode(input);
return constructor.apply(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11);
}
@Override
public void encode(B output, C value) {
codec1.encode(output, getter1.apply(value));
codec2.encode(output, getter2.apply(value));
codec3.encode(output, getter3.apply(value));
codec4.encode(output, getter4.apply(value));
codec5.encode(output, getter5.apply(value));
codec6.encode(output, getter6.apply(value));
codec7.encode(output, getter7.apply(value));
codec8.encode(output, getter8.apply(value));
codec9.encode(output, getter9.apply(value));
codec10.encode(output, getter10.apply(value));
codec11.encode(output, getter11.apply(value));
}
};
}
static <B, C, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> StreamCodec<B, C> composite(
StreamCodec<? super B, T1> codec1,
Function<C, T1> getter1,
StreamCodec<? super B, T2> codec2,
Function<C, T2> getter2,
StreamCodec<? super B, T3> codec3,
Function<C, T3> getter3,
StreamCodec<? super B, T4> codec4,
Function<C, T4> getter4,
StreamCodec<? super B, T5> codec5,
Function<C, T5> getter5,
StreamCodec<? super B, T6> codec6,
Function<C, T6> getter6,
StreamCodec<? super B, T7> codec7,
Function<C, T7> getter7,
StreamCodec<? super B, T8> codec8,
Function<C, T8> getter8,
StreamCodec<? super B, T9> codec9,
Function<C, T9> getter9,
StreamCodec<? super B, T10> codec10,
Function<C, T10> getter10,
StreamCodec<? super B, T11> codec11,
Function<C, T11> getter11,
StreamCodec<? super B, T12> codec12,
Function<C, T12> getter12,
Function12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, C> constructor
) {
return new StreamCodec<B, C>() {
@Override
public C decode(B input) {
T1 v1 = codec1.decode(input);
T2 v2 = codec2.decode(input);
T3 v3 = codec3.decode(input);
T4 v4 = codec4.decode(input);
T5 v5 = codec5.decode(input);
T6 v6 = codec6.decode(input);
T7 v7 = codec7.decode(input);
T8 v8 = codec8.decode(input);
T9 v9 = codec9.decode(input);
T10 v10 = codec10.decode(input);
T11 v11 = codec11.decode(input);
T12 v12 = codec12.decode(input);
return constructor.apply(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12);
}
@Override
public void encode(B output, C value) {
codec1.encode(output, getter1.apply(value));
codec2.encode(output, getter2.apply(value));
codec3.encode(output, getter3.apply(value));
codec4.encode(output, getter4.apply(value));
codec5.encode(output, getter5.apply(value));
codec6.encode(output, getter6.apply(value));
codec7.encode(output, getter7.apply(value));
codec8.encode(output, getter8.apply(value));
codec9.encode(output, getter9.apply(value));
codec10.encode(output, getter10.apply(value));
codec11.encode(output, getter11.apply(value));
codec12.encode(output, getter12.apply(value));
}
};
}
static <B, T> StreamCodec<B, T> recursive(UnaryOperator<StreamCodec<B, T>> factory) {
return new StreamCodec<B, T>() {
private final Supplier<StreamCodec<B, T>> inner = Suppliers.memoize(() -> factory.apply(this));
@Override
public T decode(B input) {
return this.inner.get().decode(input);
}
@Override
public void encode(B output, T value) {
this.inner.get().encode(output, value);
}
};
}
default <S extends B> StreamCodec<S, V> cast() {
return (StreamCodec<S, V>)this;
}
@FunctionalInterface
public interface CodecOperation<B, S, T> {
StreamCodec<B, T> apply(StreamCodec<B, S> original);
}
}引用的其他类
-
- 引用位置:
参数/继承
- 引用位置:
-
- 引用位置:
参数/继承
- 引用位置:
-
- 引用位置:
参数
- 引用位置: