写点什么

java 教程——注解,Java 程序员校招蚂蚁金服

用户头像
极客good
关注
发布于: 刚刚

}


}


@selfAnnotation


class persson{


private int num;


public int getNum(){


return this.num;


}


}


//第三步:添加元注解


@Target(ElementType.TYPE)


@Retention(RetentionPolicy.RUNTIME)


//第一步:定义注解


@interface selfAnnotation{


//第二步:定义参数


int type() default 1;


}




二、使用反射 API 读取 Annotation:


Class.getAnnotation(Class)


Field.getAnnotation(Class)


Method.getAnnotation(Class)


Constructor.getAnnotation(Class)


package test;


import java.lang.annotation.*;


public class changeData {


public static void main(String[] args) {


Class<persson> pClass = persson.class;


if(pClass.isAnnotationPresent(selfAnnotation.class)){


selfAnnotation annotation = pClass.getAnnotation(selfAnnotation.class);


System.out.println(annotation.type());


}


}


}


@selfAnnotation(type = 2)


class persson{


private int num;


public int getNum(){


return this.num;


}


}


//第三步:添加元注解


@Target(ElementType.TYPE)


@Retention(RetentionPolicy.RUNTIME)


//第一步:定义注解


@interface selfAnnotation{


//第二步:定义参数


int type() default 1;


}



三、读取方法参数的注解


我们都知道,一个函数的参数可以是多个,而一个参数的注解也可以是多个,所以,我们获取到的 参数的注解是一个二维数组,即第几个参数的第几个注解


package test;


import java.lang.annotation.*;


import java.lang.reflect.Method;


import java.util.Arrays;


public class changeData {


public static void main(String[] args) {


Class<persson> pClass


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


= persson.class;


try {


Method method_getNum = pClass.getMethod("getNum", int.class);


Annotation[][] parameterAnnotations = method_getNum.getParameterAnnotations();


System.out.println(Arrays.toString(parameterAnnotations[0]));


} catch (NoSuchMethodException e) {


e.printStackTrace();


}


}


}


class persson{


private int num;


public int getNum(@two @one int a){


return this.num;


}


}


@Retention(RetentionPolicy.RUNTIME)


@Target(ElementType.PARAMETER)


@interface one{


int type() default 1;


}


@Retention(RetentionPolicy.RUNTIME)


@Target(ElementType.PARAMETER)


@interface two{


int value() default 2;


}



四、使用注解


注解如何使用,完全由程序自己决定。例如,JUnit 是一个测试框架,它会自动运行所有标记为@Test的方法。


我们来看一个@Range注解,我们希望用它来定义一个String字段的规则:字段长度满足@Range的参数定义:

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
java教程——注解,Java程序员校招蚂蚁金服