Java注解小试
Posted areful
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java注解小试相关的知识,希望对你有一定的参考价值。
Java通过注解方式指明url中必须包括键值:
import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.lang.reflect.Field; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; public class AnnotationTest @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface CbdLinkAnnotation enum TYPE OPTIONAL, REQUIRED TYPE value() default TYPE.OPTIONAL; public static class A @CbdLinkAnnotation(value = CbdLinkAnnotation.TYPE.OPTIONAL) public static final String KEY1 = "key1"; @CbdLinkAnnotation(value = CbdLinkAnnotation.TYPE.REQUIRED) public static final String KEY2 = "key2"; public Map<String, String> map = new HashMap<>(); public A(String url) //TODO: convert String to Map<String, String> public static void main(String[] args) Set<String> set = new HashSet<>(); Field[] fields = A.class.getFields(); for (Field field : fields) CbdLinkAnnotation[] annotations = field.getAnnotationsByType(CbdLinkAnnotation.class); if (annotations != null) for (CbdLinkAnnotation annotation : annotations) if (annotation.value() == CbdLinkAnnotation.TYPE.REQUIRED) set.add(field.getName()); A a = new A("your_custom_string?key1=value1&key2=value2"); for (String s : set) if (!a.map.containsKey(s)) throw new RuntimeException("key " + s + " is required.");
运行测试(默认KEY2为空,于是抛异常):
以上是关于Java注解小试的主要内容,如果未能解决你的问题,请参考以下文章