001package com.mrivanplays.annotationconfig.core;
002
003import java.lang.annotation.Documented;
004import java.lang.annotation.ElementType;
005import java.lang.annotation.Retention;
006import java.lang.annotation.RetentionPolicy;
007import java.lang.annotation.Target;
008
009/**
010 * Annotation, representing a custom (non-primitive) type of the field it was annotated on. The
011 * value specified should be a {@link FieldTypeResolver} class, which is resolving primitive value
012 * to field value.
013 */
014@Documented
015@Retention(RetentionPolicy.RUNTIME)
016@Target(ElementType.FIELD)
017public @interface TypeResolver {
018
019  /**
020   * Class value of the {@link FieldTypeResolver}
021   *
022   * @return class value
023   */
024  Class<? extends FieldTypeResolver> value();
025}