JSTL - Usando o forEach para iterar sobre uma classe definida pelo usuário [duplicate]

Esta pergunta já tem uma resposta aqui:

javax.servlet.ServletException: javax.servlet.jsp.JspTagException: não sabe como iterar os “itens” fornecidos em <forEach> 3 respostas

Quais métodos eu preciso adicionar a uma classe Java personalizada para que eu possa iterar sobre os itens em um de seus membros? Não consegui encontrar nenhuma especificação sobre como a tag JSTL forEach realmente funciona; portanto, não tenho certeza de como implementar iss

or exemplo, se eu fiz uma classe genérica "ProjectSet" e gostaria de usar a seguinte marcação na visualização JSP:

<c:forEach items="${projectset}" var="project">
...
</c:forEach>

Arquivo de classe básica:

public class ProjectSet {
    private ArrayList<Project> projects;
    public ProjectSet() {
        this.projects = new ArrayList<Project>();
    }
    // .. iteration methods ??
}

xiste alguma interface que eu deva implementar como a do PHArrayAccess ouIterator para que isso funcione?

Edit: Sem acessar diretamente a própria ArrayList, porque provavelmente usarei algum tipo de classe Set usando genéricos, e a exibição JSP não precisará saber sobre o funcionamento interno da class

questionAnswers(3)

yourAnswerToTheQuestion