读书人

怎么用反射得到方法参数的名字(其他方

发布时间: 2013-03-19 17:22:05 作者: rapoo

如何用反射得到方法参数的名字(其他方法也可)
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楼的朋友给的链接,我觉得很有启发,学习了。
------解决方案--------------------


楼上有理。

读书人网 >J2EE开发

热点推荐