← Questões de Programação

Programação · CONSULPLAN · 2022

Questão comentada de Programação

A seguinte função em Java destina-se a receber uma lista como parâmetro, bem como inserir elementos de instâncias da classe Produto. 1. public static int f1(ArrayList lista){ 2. for (int i = 0; i < 10; i++) { 3. Produto P = Produto(); 4. lista.add(P); 5. } 6. return lista.size(); 7. } Após analisar o trecho de código-fonte, assinale a afirmativa correta.

Gabarito: B

Em Java, para criar um objeto, a forma clássica é usar o operador new junto com o construtor da classe. Então, se a intenção era instanciar um Produto, a linha deveria seguir algo como Produto P = new Produto();. Sem o new, o código não faz a criação do objeto e a linha fica sintaticamente incorreta. Esse detalhe é bem cobrado em prova porque a banca gosta de testar se voce confunde declaração de referência com instanciação real. No trecho apresentado, a função percorre um laço de 0 a 9 e tenta inserir 10 elementos na lista. A ideia geral está clara, mas a execução trava justamente na criação do objeto, porque Produto P = Produto(); não é uma sintaxe válida em Java. Falta o operador new, que é indispensável para instanciar a classe, salvo situações muito específicas como métodos de fábrica, o que não é o caso aqui. Por isso o gabarito é a letra B. A banca apontou corretamente o erro sintático na linha 3. Se a linha estivesse correta, aí sim a função adicionaria 10 produtos e retornaria o tamanho da lista, que poderia até não ser 10 se a lista já viesse preenchida. Mas com o código como está, a falha vem antes da lógica de contagem. Vale lembrar: em Java, assinatura de método static não é problema por si só. Métodos estáticos podem receber listas, manipular objetos e retornar valores normalmente. O problema aqui não é a estática nem o retorno, e sim a ausência do new na criação do objeto.

Continue treinando

Questões relacionadas