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注解小试的主要内容,如果未能解决你的问题,请参考以下文章

java注释的java注解

java注解的参数没有被赋值

java注解

Android APT注解处理器 ( 配置注解依赖支持的注解类型Java 版本支持 )

Java注解教程及自定义注解

java注解是怎么实现的?