@Target(value=ANNOTATION_TYPE) @Retention(value=RUNTIME) @Documented public @interface CsvComposition
合成したのアノテーションには必ず付与します。
ElementType.FIELD
とElementType.ANNOTATION_TYPE
の2つを指定します。
ElementType.ANNOTATION_TYPE
を追加しておきます。
CsvOverridesAttribute
を使用します。
@Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(CsvCustomComposition.List.class)
@CsvComposition // 合成のアノテーションであることを示すためのメタアノテーション
@CsvDefaultValue(value="0", cases=BuildCase.Read) // 上書き対象のアノテーション
@CsvRequire
@CsvNumberRange(min="0", max="100,000,000")
public @interface CsvCustomComposition {
// @CsvDefaultValueの属性valueの上書き
@CsvOverridesAttribute(annotation=CsvDefaultValue.class, name="value")
String defaultValueRead();
// 共通の属性 - グループ (groups属性を持つアノテーションは上書きされます)
Class<?>[] groups() default {};
// 繰り返しのアノテーションの格納用アノテーションの定義
@Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@interface List {
CsvCustomComposition[] value();
}
}
Copyright © 2022 mygreen. All rights reserved.