Questão nº 42
Questão de Tecnologia da Informação · FCC TRT17 2022 (nº 42)
Na página JSP de uma aplicação web com Java, em condições ideais, uma lista de objetos do tipo Funcionario, contendo os dados dos funcionários de uma empresa, foi recebida por meio da instrução abaixo.
```jsp
<%
List<Funcionario> funcs = (List<Funcionario>) request.getAttribute("funcs");
%>
```
Em seguida, na mesma página, os dados desta lista foram renderizados em uma tabela, por meio do bloco de código abaixo.
```jsp
<table border="1">
<tr><th>Nome</th><th>E-mail</th><th>Cargo</th><th>Salário</th></tr>
I
<tr>
<td><%= func.getNome()%></td>
<td><%= func.getEmail()%></td>
<td><%= func.getCargo()%></td>
<td><%= func.getSalario()%></td>
</tr>
<%}%>
</table>
```
Considerando que todos os métodos existem e todos os recursos necessários foram importados na página JSP, para que a lista seja corretamente exibida, a lacuna I deve ser preenchida corretamente por:
- A
<% for (int i = 0; i<= funcs.size(); i++){%> - B
<% for (int i = 0; i<= funcs.size(); i++){ Funcionario func = funcs.getItem(i); %> - C`<% for (Funcionario func : funcs){ %>` (alternativa correta)
- D`<% int i=0; while(i<= funcs.size()){ Funcionario func = funcs.get(i);%>`
- E`<% forEach (funcs : Funcionario func){ %>`
Resposta comentada
Gabarito Alternativa C
Para exibir múltiplos itens de uma lista em uma página JSP, é necessário percorrer essa lista usando um loop (estrutura de repetição) para processar cada item individualmente. O Java oferece o enhanced for loop (também conhecido como "for-each") que é a maneira mais simples e segura de fazer isso com coleções.
(A) Incorreta: O loop for (int i = 0; i <= funcs.size(); i++) está incorreto porque os índices de uma lista em Java vão de 0 até size() - 1. Usar i <= funcs.size() fará com que o loop tente acessar um índice que não existe (funcs.size()), resultando em um erro IndexOutOfBoundsException.
(B) Incorreta: Esta alternativa possui dois erros: primeiro, o mesmo erro de IndexOutOfBoundsException da alternativa A (i <= funcs.size()). Segundo, o método getItem(i) não é um método padrão da interface List do Java; o correto para acessar um elemento por índice seria get(i). Esta é a armadilha mais tentadora, pois tenta uma abordagem indexada mas com erro de método e de limite.
(C) Correta: Esta é a sintaxe correta do enhanced for loop (ou "for-each") em Java, que é a forma mais recomendada e idiomática para iterar sobre coleções como List quando você precisa acessar cada elemento, mas não necessariamente o seu índice. Ele percorre cada objeto Funcionario dentro da lista funcs e atribui-o à variável func em cada iteração, de forma segura e legível.
(D) Incorreta: O loop while(i<= funcs.size()) também sofreria de IndexOutOfBoundsException pelo mesmo motivo da alternativa A. Além disso, falta a instrução para incrementar i (i++) dentro do loop, o que resultaria em um loop infinito.
(E) Incorreta: A sintaxe forEach (funcs : Funcionario func) não é uma sintaxe válida para loops em Java. Ela não corresponde nem ao enhanced for loop nem a outras formas de iteração padrão.
Fonte: FCC TRT17 2022 Técnico Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.