访问任何阵列的特定成员

时间:2014-10-29 13:38:32

标签: java

我试图遍历我的类的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()函数。我的错。

3 个答案:

答案 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()); 
    }
}]