Skip to content

Commit f5e98d8

Browse files
committed
Annotated Serializer with @NonNull
Added `@NonNull` annotations to `Serializer` methods and variables to enhance null safety and improve clarity of nullability expectations.
1 parent 1e22eac commit f5e98d8

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

nbt/src/main/java/core/nbt/serialization/Serializer.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import core.nbt.serialization.adapter.StringAdapter;
1414
import core.nbt.serialization.adapter.UUIDAdapter;
1515
import core.nbt.tag.Tag;
16+
import org.jspecify.annotations.NonNull;
1617
import org.jspecify.annotations.NullMarked;
1718

1819
import java.io.File;
@@ -24,14 +25,14 @@
2425
import java.util.UUID;
2526

2627
@NullMarked
27-
class Serializer implements TagDeserializationContext, TagSerializationContext {
28+
sealed class Serializer implements TagDeserializationContext, TagSerializationContext permits NBT {
2829
private final Map<Class<?>, TagDeserializer<?>> hierarchyDeserializers = new HashMap<>();
2930
private final Map<Class<?>, TagSerializer<?>> hierarchySerializers = new HashMap<>();
3031

3132
private final Map<Type, TagDeserializer<?>> deserializers = new HashMap<>();
3233
private final Map<Type, TagSerializer<?>> serializers = new HashMap<>();
3334

34-
public Serializer() {
35+
protected Serializer() {
3536
registerTypeAdapter(Boolean.class, BooleanAdapter.INSTANCE);
3637
registerTypeAdapter(Byte.class, ByteAdapter.INSTANCE);
3738
registerTypeAdapter(Double.class, DoubleAdapter.INSTANCE);
@@ -81,20 +82,20 @@ public Tag serialize(Object object) throws ParserException {
8182
@Override
8283
@SuppressWarnings("unchecked")
8384
public Tag serialize(Object object, Class<?> type) throws ParserException {
84-
var serializer = (TagSerializer<Object>) hierarchySerializers.get(object.getClass());
85+
var serializer = (TagSerializer<@NonNull Object>) hierarchySerializers.get(object.getClass());
8586
if (serializer != null) return serializer.serialize(object, this);
8687
return hierarchySerializers.entrySet().stream()
8788
.filter(entry -> entry.getKey().isInstance(object))
8889
.findAny()
89-
.map(entry -> (TagSerializer<Object>) entry.getValue())
90+
.map(entry -> (TagSerializer<@NonNull Object>) entry.getValue())
9091
.map(value -> value.serialize(object, this))
9192
.orElseGet(() -> serialize(object, (Type) object.getClass()));
9293
}
9394

9495
@Override
9596
@SuppressWarnings("unchecked")
9697
public Tag serialize(Object object, Type type) throws ParserException {
97-
var serializer = (TagSerializer<Object>) serializers.get(type);
98+
var serializer = (TagSerializer<@NonNull Object>) serializers.get(type);
9899
if (serializer != null) return serializer.serialize(object, this);
99100
throw new ParserException("No tag serializer registered for type: " + type);
100101
}

0 commit comments

Comments
 (0)