如何用反射得到方法参数的名字(其他方法也可)
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也不是所有的函数参数名都能显示。
------解决方案--------------------呵呵, 说得有道理,楼主可以去谷歌一下,其实到方法中参数名称是否有意义,这就得看自己的需求,或者查一下jdk,
------解决方案--------------------要分析class文件结构,
从class文件中提取参数信息
------解决方案--------------------有一点麻烦 但是LZ你取该参数的意义何在呢?
------解决方案--------------------
有什么意义说出来看看?
参数名确实不知道有什么意义,属性名还有点用。
------解决方案--------------------参数名还真不知道有什么用!
------解决方案--------------------分析源码直接用 Eclipse 自带的 AST/DOM 比较简单,现成的。
分析class 文件 Eclipse 也自带了,不过不知道是哪个类或 jar 做的,期待楼下哪位研究一下。
------解决方案--------------------获取到形参的名称似乎没什么意义,因为形参叫什么都不会影响程序的执行的。
------解决方案--------------------呵呵,楼主这需求还真是绝了
------解决方案--------------------不可能吧,编译后的文件把变量放在变量表里面,不需要名称了,你说 class 文件中还需要保存源码的名称吗????
------解决方案--------------------建议看看1楼的朋友给的链接,我觉得很有启发,学习了。
------解决方案--------------------