urlで指定されたJavaアノテーションの仕方は、キーを含める必要があります。
輸入java.lang.annotation.ElementType。 輸入java.lang.annotation.Retention。 輸入java.lang.annotation.RetentionPolicy。 輸入java.lang.annotation.Target; インポートをjava.lang.reflect.Field; 輸入java.util.HashMapを; 輸入はjava.util.HashSet。 輸入java.util.Map; 輸入java.util.Set; パブリック クラスAnnotationTest { @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) パブリック @のインタフェースCbdLinkAnnotation { 列挙TYPE {OPTIONAL、REQUIRED} TYPE値()デフォルトTYPE.OPTIONAL。 } パブリック 静的 クラスA { @CbdLinkAnnotation(値 = CbdLinkAnnotation.TYPE.OPTIONAL) パブリック 静的 最終 = "KEY1"文字列KEY1 。 @CbdLinkAnnotation(値 = CbdLinkAnnotation.TYPE.REQUIRED) パブリック 静的 最終 = "KEY2"文字列KEY2 。 公共の地図<文字列、文字列>マップ= 新しい HashMapの<> (); 公共A(文字列のURL){ //TODO:<文字列、文字列>地図する文字列を変換 } } パブリック 静的 ボイドメイン(文字列[]引数){ セットの<string>設定= 新しい HashSetのを<> (); フィールド[]フィールド = A.のクラス.getFields()。 用(フィールドフィールド:フィールド){ CbdLinkAnnotation []注釈 = field.getAnnotationsByType(CbdLinkAnnotation クラス)。 もし(!注釈= ヌル){ のために(CbdLinkAnnotation注釈:注釈){ 場合(annotation.value()== CbdLinkAnnotation.TYPE.REQUIRED){ set.add(field.getName())。 } } } } A = 新しい A( "your_custom_string KEY1 =値1&KEY2 = value2の?" )。 以下のため:(Stringをセット){ 場合(!a.map.containsKey(S)){ スロー 新しいのRuntimeException( "キー" + S + "が。必要とします" ); } } } }
(デフォルトKEY2は、例外をスロー空である)テストを実行します。