Questão de Programação — Plataforma Java — FUNDATEC 2025
- Código
- qg474907
- Banca
- FUNDATEC
- Órgão
- PROCERGS
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista em Computação / Ênfase em Programação de Sistemas na Tecnologia JAVA

- Abreak
- Bincome
- Cprovide
- Dreturn
- Eyield

GabaritoE — yield
Gabarito: letra E. Na sintaxe case L -> (arrow labels), introduzida como switch expression no Java 14 e consolidada no Java 17, o valor produzido por um ramo é devolvido com a palavra-chave yield — é ela que preenche a lacuna. As demais alternativas não se aplicam: break é usado no switch tradicional (com case L:), return sai do método inteiro, e income/provide não são palavras reservadas do Java.
A estrutura switch em Java passou por uma evolução significativa. No modelo clássico, que existe desde as primeiras versões, cada case é seguido de dois-pontos (case 1:) e o fluxo "cai" para o próximo caso, a menos que se use break para interromper. Esse é o chamado fall-through — se você esquecer o break, a execução continua nos casos seguintes, o que é uma fonte clássica de bugs.
A partir do Java 14 (como preview) e definitivamente no Java 17, foi introduzida a switch expression com a sintaxe de seta (case L ->). Nessa nova forma, cada ramo é independente: não há fall-through, e o break não é necessário. Além disso, a expressão pode produzir um valor, e é exatamente aí que entra o yield. Quando você quer que um ramo da switch expression devolva um resultado, usa yield seguido do valor. Por exemplo:
int resultado = switch (opcao) {
case 1 -> 10;
case 2 -> 20;
default -> yield 0; // ou simplesmente 0
};Na verdade, com a sintaxe de seta, o valor pode ser escrito diretamente após a seta (case 1 -> 10;), e o yield é necessário quando o ramo tem múltiplas instruções ou um bloco de código. A alternativa E é a única que corresponde a uma palavra-chave real da linguagem nesse contexto.
A pegadinha da banca está em confundir o switch tradicional com a switch expression. No modelo antigo, break é a palavra-chave que encerra o caso; no novo modelo, yield é a que devolve o valor. O candidato que memorizou apenas o switch clássico tende a marcar break, mas isso estaria errado — break não produz valor nenhum.
break é usado no switch tradicional (com case L:) para interromper o fall-through. Na sintaxe case L ->, o break não é necessário e não devolve valor — a switch expression não usa break para produzir resultado.
income não é uma palavra-chave do Java. É apenas um nome de variável comum (em inglês, "renda"), mas não tem nenhum significado especial na linguagem.
provide também não é uma palavra-chave do Java. Não existe nenhuma construção da linguagem com esse nome.
return encerra a execução do método inteiro, devolvendo um valor ao chamador. Dentro de uma switch expression, usar return sairia do método, não devolveria o valor da expressão — o correto é yield.
yield é a palavra-chave que devolve um valor de um ramo da switch expression com sintaxe case L ->. Quando o ramo precisa produzir um resultado (especialmente em blocos com múltiplas instruções), yield é a forma correta. É exatamente o que preenche a lacuna do código.
Para diferenciar na prova: switch tradicional (case L:) usa break para interromper; switch expression (case L ->) usa yield para devolver valor. Se a questão fala em "produzir valor" ou "expressão", a resposta é yield.
Gabarito: letra E
Link permanente: /questoes/qg474907