日期:2014-05-18  浏览次数:20842 次

如何用反射得到方法参数的名字(其他方法也可)
public class BookController 

public void init(String name,Integer age) 



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

Class clazz = BookController.class; 
Method[] methods = clazz.getMethods(); 
for(Method method : methods) 

String name = method.getName(); 
if(name.equals("init")) 

Class[] carray = method.getParameterTypes(); 
for(Class cla : carray) 

System.out.println(cla.getSimpleName()); 






控制台输出的结果是: 
String 
Integer 

我不光要这些参数类型,我还要参数的名字name,age 
这两个参数的名字,请问,如何得到。 

如果这个方法是这样的public void init(String userName,Integer userAge) 
那得到的就是userName,userAge 

请问,该如何的到这些参数 

谢谢。。。 

------解决方案--------------------
JAVA获取方法参数名的分析(一)

JAVA获取方法参数名的分析(二)

这两篇文章 也许对你会有帮助
------解决方案--------------------
这个好像不能直接获取吧,不过可以曲线救国
比如在public void init(String userName,Integer userAge)之前加一个 Annotation定义,
并且在 Annotation中写入你的init方法的参数,然后再执行这个方法的时候先读取 Annotation就可以了
 Annotation的用法可以google一下啦

不过你的用途是什么呢?  
------解决方案--------------------
获取参数名字意义何在?
------解决方案--------------------
别费这事了,没有简单有效的方法。你用Eclipse也不是所有的函数参数名都能显示。
------解决方案--------------------
引用:
这个好像不能直接获取吧,不过可以曲线救国
比如在public void init(String userName,Integer userAge)之前加一个 Annotation定义,
并且在 Annotation中写入你的init方法的参数,然后再执行这个方法的时候先读取 Annotation就可以了
 Annotation的用法可以google一下啦

不过你的用途是什么呢?
呵呵, 说得有道理,楼主可以去谷歌一下,其实到方法中参数名称是否有意义,这就得看自己的需求,或者查一下jdk,
------解决方案--------------------
要分析class文件结构,
从class文件中提取参数信息
------解决方案--------------------
有一点麻烦  但是LZ你取该参数的意义何在呢?
------解决方案--------------------
引用:
各位,当然有用,没用我会提问吗。

有什么意义说出来看看?
参数名确实不知道有什么意义,属性名还有点用。
------解决方案--------------------
参数名还真不知道有什么用!
------解决方案--------------------
分析源码直接用 Eclipse 自带的 AST/DOM 比较简单,现成的。
分析class 文件 Eclipse 也自带了,不过不知道是哪个类或 jar 做的,期待楼下哪位研究一下。

------解决方案--------------------
获取到形参的名称似乎没什么意义,因为形参叫什么都不会影响程序的执行的。
------解决方案--------------------
呵呵,楼主这需求还真是绝了
------解决方案--------------------
不可能吧,编译后的文件把变量放在变量表里面,不需要名称了,你说 class 文件中还需要保存源码的名称吗????
------解决方案--------------------
建议看看1楼的朋友给的链接,我觉得很有启发,学习了。
------解决方案--------------------