Module net.luis.utils
Record Class CodecGrouper2<CI1,CI2,O>
java.lang.Object
java.lang.Record
net.luis.utils.io.codec.group.grouper.CodecGrouper2<CI1,CI2,O>
- Type Parameters:
CI1
- The type of the first componentCI2
- The type of the second componentO
- The type of the resulting object this grouper is for- Record Components:
codec1
- The first codeccodec2
- The second codec
public record CodecGrouper2<CI1,CI2,O> (@NotNull ConfiguredCodec<CI1,O> codec1, @NotNull ConfiguredCodec<CI2,O> codec2)
extends Record
Represents a group of two codecs.
The grouper is used for creating a new single codec that encodes and decodes a value of a specific type.
Each codec is responsible for encoding and decoding a specific component (field) of the value.
The grouped codec is created by providing a function that creates the value from the decoded components.
The grouper is used for creating a new single codec that encodes and decodes a value of a specific type.
Each codec is responsible for encoding and decoding a specific component (field) of the value.
The grouped codec is created by providing a function that creates the value from the decoded components.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final @NotNull ConfiguredCodec
<CI1, O> The field for thecodec1
record component.private final @NotNull ConfiguredCodec
<CI2, O> The field for thecodec2
record component. -
Constructor Summary
ConstructorsConstructorDescriptionCodecGrouper2
(@NotNull ConfiguredCodec<CI1, O> codec1, @NotNull ConfiguredCodec<CI2, O> codec2) Constructs a new codec grouper with the provided codecs.
Do not use this constructor directly, use the builder method inCodecBuilder
instead. -
Method Summary
Modifier and TypeMethodDescription@NotNull ConfiguredCodec
<CI1, O> codec1()
Returns the value of thecodec1
record component.@NotNull ConfiguredCodec
<CI2, O> codec2()
Returns the value of thecodec2
record component.create
(@NotNull CodecGroupingFunction2<CI1, CI2, O> function) Creates a new codec using the codecs of this grouper and the provided grouping function.
The grouping function is used to create the resulting object from the decoded components.final boolean
Indicates whether some other object is "equal to" this one.final int
hashCode()
Returns a hash code value for this object.final String
toString()
Returns a string representation of this record class.
-
Field Details
-
Constructor Details
-
CodecGrouper2
@Internal public CodecGrouper2(@NotNull @NotNull ConfiguredCodec<CI1, O> codec1, @NotNull @NotNull ConfiguredCodec<CI2, O> codec2) Constructs a new codec grouper with the provided codecs.
Do not use this constructor directly, use the builder method inCodecBuilder
instead.- Parameters:
codec1
- The first codeccodec2
- The second codec- Throws:
NullPointerException
- If any of the provided codecs is null
-
-
Method Details
-
create
@NotNull public @NotNull Codec<O> create(@NotNull @NotNull CodecGroupingFunction2<CI1, CI2, O> function) Creates a new codec using the codecs of this grouper and the provided grouping function.
The grouping function is used to create the resulting object from the decoded components.- Parameters:
function
- The grouping function- Returns:
- The created codec
- Throws:
NullPointerException
- If the provided grouping function is null
-
toString
Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components. -
hashCode
public final int hashCode()Returns a hash code value for this object. The value is derived from the hash code of each of the record components. -
equals
Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared withObjects::equals(Object,Object)
. -
codec1
Returns the value of thecodec1
record component.- Returns:
- the value of the
codec1
record component
-
codec2
Returns the value of thecodec2
record component.- Returns:
- the value of the
codec2
record component
-