Java如何获取方法参数的参数名称

 我来答
安徽新华电脑专修学院
2018-06-13 · 百度知道合伙人官方认证企业
安徽新华电脑专修学院
安徽新华电脑专修学院始建于1988年,隶属于新华教育集团,是国家信息化教育示范基地、中国 IT 教育影响力品牌院校.
向TA提问
展开全部
  • package com.mikan;  

  • import java.lang.annotation.*;  

  • /** 

  • * @author Mikan 

  • * @date 2015-08-04 23:39 

  • */  

  • @Target(ElementType.PARAMETER)  

  • @Retention(RetentionPolicy.RUNTIME)  

  • @Documented  

  • public @interface Param {  

  • String value();  

  • }  

    获取注解中的参数名的工具类:

  • package com.mikan;  

  • import java.lang.annotation.Annotation;  

  • import java.lang.reflect.Method;  

  • /** 

  • * @author Mikan 

  • * @date 2015-08-05 00:26 

  • */  

  • public class ParameterNameUtils {  

  • /** 

  • * 获取指定方法的参数名 

  • * @param method 要获取参数名的方法 

  • * @return 按参数顺序排列的参数名列表 

  • */  

  • public static String[] getMethodParameterNamesByAnnotation(Method method) {  

  • Annotation[][] parameterAnnotations = method.getParameterAnnotations();  

  • if (parameterAnnotations == null || parameterAnnotations.length == 0) {  

  • return null;  

  • }  

  • String[] parameterNames = new String[parameterAnnotations.length];  

  • int i = 0;  

  • for (Annotation[] parameterAnnotation : parameterAnnotations) {  

  • for (Annotation annotation : parameterAnnotation) {  

  • if (annotation instanceof Param) {  

  • Param param = (Param) annotation;  

  • parameterNames[i++] = param.value();  

  • }  

  • }  

  • }  

  • return parameterNames;  

  • }  

  • }  

测试类:

  • package com.mikan;  

  • import java.lang.reflect.Method;  

  • import java.util.Arrays;  

  • /** 

  • * @author Mikan 

  • * @date 2015-08-04 23:40 

  • */  

  • public class ParameterNameTest {  

  • public void method1(@Param("parameter1") String param1, @Param("parameter2") String param2) {  

  • System.out.println(param1 + param2);  

  • }  

  • public static void main(String[] args) throws Exception {  

  • Class<ParameterNameTest> clazz = ParameterNameTest.class;  

  • Method method = clazz.getDeclaredMethod("method1", String.class, String.class);  

  • String[] parameterNames = ParameterNameUtils.getMethodParameterNamesByAnnotation(method);  

  • System.out.println(Arrays.toString(parameterNames));  

  • }  

  • }  

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式