2014-10-29 4 views
0

Я пытаюсь выполнить итерацию через мой класс классов, чтобы распечатать каждый метод в этом классе. Однако это повторяет одни и те же методы первого класса снова и снова, а не повторяется через список классов и печатает методы каждого класса. Я делаю что-то глупое, но я не вижу его. Кто-нибудь может мне помочь ?Доступ к определенному члену любого массива

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

EDIT:

К сожалению, ребята, неисправность является функцией declaredMethods(). Виноват.

+1

Не могли бы вы показать нам, что классы содержит (инициализирован)? – yunandtidus

+1

Не вижу проблем (хотя, возможно, я тоже глуп), вы проверили, правильно ли заполнены классы? Кроме того, какие методы он печатает? они меняются, если вы меняете первый класс? – FelixMarcus

ответ

0

Я думаю, что ваш код прав. Наблюдаемый эффект заключается в том, что ваш код будет печатать перегруженные методы.

Рассмотрим следующий класс:

public class Foo { 
    public int bar(){ 
     return 1; 
    } 
    public int bar(int i){ 
     return i; 
    } 
} 

с кодом он будет возвращать:

бар
бар

Вы можете добавить имена в набор, и когда вы закончите с текущий класс распечатывает набор.

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); 
} 
0

Ваш код выглядит хорошо. Мое лучшее предположение заключается в том, что что-то не так с вашим classes arraylist. Если вы используете среду IDE, которая позволяет вам проходить свою программу, я рекомендую ее использовать. В противном случае я бы поставил операторы печати до и после цикла j, которые распечатывают имя класса или что-то подобное.

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()); 
    } 
}] 
Смежные вопросы