21.注解

作者: Java架构师之路 | 来源:发表于2019-08-24 09:16 被阅读0次

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;


@Target(ElementType.CONSTRUCTOR)
@Retention(RetentionPolicy.RUNTIME)
public @interface ConstructorAnnotaion {
    String value() default "默认构造器";
}



import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;


@Target({ElementType.FIELD,ElementType.METHOD,ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface FieldMethodParamterAnnotaion {
    String describe();
    Class type() default void.class;
}

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;


public class AnnotationClassTest {
    @FieldMethodParamterAnnotaion(describe = "编号", type = int.class)
    int id;

    @ConstructorAnnotaion("默认构造方法")
    public AnnotationClassTest() {

    }

    public AnnotationClassTest(@FieldMethodParamterAnnotaion(describe = "编号", type = int.class) int id) {
        this.id = id;
    }

    @FieldMethodParamterAnnotaion(describe = "获取编号", type = int.class)
    public int getId() {
        return id;
    }

    @FieldMethodParamterAnnotaion(describe = "设置编号")
    public void setId(int id) {
        this.id = id;
    }

}



import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;


public class AnnotationTest {
    @Test
    public void getConstructor(){
        Constructor[] constructors = AnnotationClassTest.class.getDeclaredConstructors();
        for (int i = 0; i <constructors.length ; i++) {
            Constructor constructor = constructors[i];
            if(constructor.isAnnotationPresent(ConstructorAnnotaion.class)){
                ConstructorAnnotaion c = (ConstructorAnnotaion)constructor.getAnnotation(ConstructorAnnotaion.class);
                System.out.println(c.value());
            }
        }
    }
    @Test
    public void getField(){
        Field[] fields = AnnotationClassTest.class.getDeclaredFields();
        for (int i = 0; i <fields.length ; i++) {
            Field field = fields[i];
            if(field.isAnnotationPresent(FieldMethodParamterAnnotaion.class)){
                FieldMethodParamterAnnotaion c = (FieldMethodParamterAnnotaion)field.getAnnotation(FieldMethodParamterAnnotaion.class);
                System.out.println(c.describe());
                System.out.println(c.type());
            }
        }
    }
    @Test
    public void getMethod(){
        Method[] methods = AnnotationClassTest.class.getDeclaredMethods();
        for (int i = 0; i <methods.length ; i++) {
            Method method = methods[i];
            if(method.isAnnotationPresent(FieldMethodParamterAnnotaion.class)){
                FieldMethodParamterAnnotaion c = (FieldMethodParamterAnnotaion)method.getAnnotation(FieldMethodParamterAnnotaion.class);
                System.out.println(c.describe());
                System.out.println(c.type());
            }
        }
    }
}

相关文章

  • 21.注解

  • Leetcode PHP题解--D121 21. Merge T

    D121 21. Merge Two Sorted Lists 题目链接 21. Merge Two Sorted...

  • Swift5.1协议

    21.协议

  • 每日一画17

    补10月21.临摹

  • 考研英语——经典长难句翻译(三)

    21. Such large, impersonal manipulation of capital and in...

  • 注解学习笔记

    什么是注解注解分类注解作用分类 元注解 Java内置注解 自定义注解自定义注解实现及使用编译时注解注解处理器注解处...

  • 注解与反射

    注解 声明一个注解类型 元注解 在定义注解时,注解类也能够使用其他的注解声明。对注解类型进行注解的注解类,我们称之...

  • 1.8 Java 注解annotation

    1.1 注解声明 Java注解Annotation,有声明注解和元注解 元注解:Java提供的元注解,所谓元注解就...

  • 注解的使用

    元注解 注解 注解本质就是接口: 元注解:修饰注解的注解 自定义注解 Text.java FruitName.ja...

  • 注解

    Java注解 注解 元注解 自定义注解 元注解:负责注解其他注解 共有4个标准的meta-annotation类型...

网友评论

      本文标题:21.注解

      本文链接:https://www.haomeiwen.com/subject/sjjfectx.html