package de.banananetwork.serialize; public interface SerializedData implements Serializable { @Override default SerializedData serialize() { return this; } void put(String key, int value); void put(String key, String value); default void put(String key, Serializable value) { put(key, value.serialize()); } void put(String key, SerializedData value); void put(String key, int[] values); void put(String key, String[] values); default put(String key, Serializable[] values) { put(key, Arrays.stream(values).map(Serializable::serialize).toArray(SerializedData[]::new)); } void put(String key, SerializedData[] values); boolean exists(String key); Type getType(String key); boolean isType(String key, Type type); String[] getKeys(); int getInt(String key); String getString(String key); SerializedData getData(String key); int[] getIntArray(String key); String[] getStringArray(String key); SerializedData[] getDataArray(String key); public enum Type { INT, INT_ARRAY, STRING, STRING_ARRAY, SERIALIZED_DATA, SERIALIZED_DATA_ARRAY; } }