项目需求:
AtELite中选择控件的某个方法,希望返回该方法的参数个数和各个参数的描述说明。其中参数个数用于构建输入框,各个参数的描述说明用于当鼠标放到输入框上时,用alt的形式显示该输入框对应参数的描述说明。
引申场景:
选择某个类的方法名称,希望能返回该方法产生的个数以及各个参数的描述说明。如:
/**
*设置id和name
*@param 用户Id
*@param 用户姓名
/**
public void setIdAndName(
int id,String name){
}
要求返回setIdAndName的参数个数2和每个参数的描述,如:用户Id,用户姓名
解决方法,引进Annotation来解决该问题。
1.定义Annotation。
2.定义相关类。
3.写测试类。
4.测试结果
原文代码参考:http://www.cnblogs.com/maxblog/archive/2010/09/01/1814821.html
1.定义Annotation。
2.定义相关类。
3.写测试类。
4.测试结果
********字段的Annotation*************
字段id的Annotation: 字段编号 int
字段name的Annotation: 字段姓名 class java.lang.String
********方法的Annotation********
方法setId的Annotation:
设置编号 void
方法setId的参数的Annotation
设置编号 int
方法setIdAndName的Annotation:
设置编号和姓名 void
方法setIdAndName的参数的Annotation
设置编号 int
姓名 class java.lang.String
方法setIdAndName2的Annotation:
设置编号和姓名 void
方法setIdAndName2的参数的Annotation
设置编号 int
没有添加Annotation参数
方法getName的Annotation:
获得姓名 class java.lang.String
方法getName的参数的Annotation
方法没有参数
方法getId的Annotation:
获得编号 int
方法getId的参数的Annotation
方法没有参数
方法setName的Annotation:
设置姓名 void
方法setName的参数的Annotation
姓名 class java.lang.String
总结:
1.若方法没有参数,则method.getParameterAnnotations返回数组长度为0,否则大于0
2.若方法参数没有Annotation,则该参数的method.getParameterAnnotation[i]的长度为0
3.getParameterAnnotations的返回类型之所以为一个二维数组主要是由于一个参数上可以存在多个annotation。这样第一维分别对应方法的各个参数,长度也和参数个数相等,而第二维则分别对应于一个参数上的多个注annotation,长度和参数上annotation的个数相等