package pluginbase.config.annotation; import pluginbase.config.serializers.Serializer; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * Used to define what {@link Serializer} to use to serialize/deserialize the value of a class field to/from its * serialized form. * <p/> * When annotated on a type, this serializer will be the preferred serializer to use for objects of the annotated type * except when an override serializers exists in a relevant {@link pluginbase.config.serializers.SerializerSet}. * When annotated on a field, this will <em>always</em> be the preferred serializer to use for that field's value, even * over override serializers. */ @Documented @Target({ElementType.FIELD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface SerializeWith { Class<? extends Serializer> value(); }