小心使用Eclipse jdt.core.IMethod的getParameterNames方法

使用org.eclipse.jdt.core.IMethod的getParameterNames方法获取方法参数时,当调用到有参数的方法时,第一次调用没有问题,第二次就不能正常工作了:

Java Model Exception: Java Model Status [VerifyCardNo(short) [in CardVerify [in CardVerify.java [in validation_lib [in src [in example]]]]] does not exist]
at org.eclipse.jdt.internal.core.JavaElement.newNotPresentException(JavaElement.java:495)
at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:529)
at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:255)
at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:241)

这应该是JDT的一个bug吧,不过可以使用getParameters方法绕过去,它的返回类型为ILocalVariable[],

然后使用ILocalVariable的getElementName获得参数名,使用getTypeSignature方法获得参数类型,不过该参数类型不是Java类型,比如String->QString; ,可以使用Signature.toString方法进行转换。

 

posted @ 2012-05-06 20:27  vwpolo  阅读(1384)  评论(0编辑  收藏  举报