我试图遍历我的类的arraylist来打印出该类中的每个方法。但是,这一遍又一遍地重复第一类的相同方法,而不是遍历类列表并打印每个类的方法。我做了一些愚蠢的事情,但我无法看到它。有人可以帮帮我吗?
for (int i = 0; i < classes.size(); i++) {
for (int j = 0; j < classes.get(i).getDeclaredMethods().length; j++) {
System.out.println(classes.get(i).getDeclaredMethods()[j].getName());
}
}
编辑:
很抱歉,故障是declaredMethods()函数。我的错。
答案 0 :(得分:0)
我认为你的代码是对的。观察到的效果是您的代码将打印重载方法。
考虑以下课程:
public class Foo {
public int bar(){
return 1;
}
public int bar(int i){
return i;
}
}
使用您的代码,它将返回:
巴
杆
您可以将名称添加到Set中,当您完成当前班级时,打印出该组。
for (int i = 0; i < classes.size(); i++) {
Set<String> methodNames = new HashSet<String>();
for (int j = 0; j < classes.get(i).getDeclaredMethods().length; j++) {
methodNames.add(classes.get(i).getDeclaredMethods()[j].getName());
}
System.out.println(methodNames);
}
答案 1 :(得分:0)
您的代码看起来很好。我最好的猜测是你的classes
arraylist出了问题。如果您使用的是允许您单步执行程序的IDE,我建议您使用它。否则,我会在打印出类名或类似内容的j
for循环之前和之后放置print语句。
答案 2 :(得分:0)
尝试将其存储在参考文件中并像这样打印,可能在 LinkedInvocations
中出现问题for (int i = 0; i < classes.size(); i++) {
for (int j = 0; j < classes.get(i).getDeclaredMethods().length; j++) {
Method[] m=classes.get(i).getDeclaredMethods();
System.out.println(m.[j].getName());
}
}]