public boolean hasNext() { while ( memberIndex <= 0 ) { if ( viewIndex >= views.length ) { // no more views, time to move up hierarchy clazz = filterClass( clazz.getSuperclass() ); viewIndex = 0; } if ( null == clazz ) { return false; } final int index = viewIndex++; members = views[index].members( clazz ); memberIndex = members.length; } return true; }
public Member next() { if ( hasNext() ) { // initialized by hasNext() return members[--memberIndex]; } throw new NoSuchElementException(); }
public Iterator<Member> iterator() { return new MemberIterator( clazz, views ); }
MemberIterator( final Class<?> clazz, final View[] views ) { this.clazz = filterClass( clazz ); this.views = views; }