Skip to content

Commit

Permalink
Add EnumAdapter for serialization and deserialization
Browse files Browse the repository at this point in the history
Introduces a generic adapter to handle conversion between enums and string tags for NBT data. This ensures seamless serialization and deserialization of enums while maintaining type safety and readability.
  • Loading branch information
NonSwag committed Feb 1, 2025
1 parent 8e03c26 commit d1dca8a
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions nbt/src/main/java/core/nbt/serialization/adapter/EnumAdapter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package core.nbt.serialization.adapter;

import core.nbt.serialization.ParserException;
import core.nbt.serialization.TagAdapter;
import core.nbt.serialization.TagDeserializationContext;
import core.nbt.serialization.TagSerializationContext;
import core.nbt.tag.StringTag;
import core.nbt.tag.Tag;
import org.jspecify.annotations.NonNull;
import org.jspecify.annotations.NullMarked;

@NullMarked
public class EnumAdapter<T extends Enum<T>> implements TagAdapter<T> {
private final Class<T> enumClass;

public EnumAdapter(Class<T> enumClass) {
this.enumClass = enumClass;
}

@Override
public @NonNull T deserialize(Tag tag, TagDeserializationContext context) throws ParserException {
return Enum.valueOf(this.enumClass, tag.getAsString());
}

@Override
public Tag serialize(T object, TagSerializationContext context) throws ParserException {
return new StringTag(object.name());
}
}

0 comments on commit d1dca8a

Please sign in to comment.