Pular para o conteúdo principal

Questão de Programação — Plataforma Java — FUNDATEC 2025

ProgramaçãoPlataforma Java
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
Na linguagem Java 17, é possível escrever novas formas da estrutura switch case, sendo "case L ->" uma delas. Sendo assim, qual alternativa preenche corretamente a lacuna no trecho de código a seguir?Q51.png 558×276
  1. Abreak
  2. Bincome
  3. Cprovide
  4. Dreturn
  5. Eyield
Revelar gabarito e comentário

GabaritoE — yield

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Switch expressions no Java 17

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.

  1. 1Switch clássico (case L:)
  2. 2Usa break p/ interromper
  3. 3Switch expression (case L ->)
  4. 4Usa yield p/ devolver valor
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

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.

Alternativa B — ❌ Incorreta

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.

Alternativa C — ❌ Incorreta

provide também não é uma palavra-chave do Java. Não existe nenhuma construção da linguagem com esse nome.

Alternativa D — ❌ Incorreta

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.

Alternativa E — ✅ Correta ⟵ GABARITO

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.

PEGA ESSA DICA!

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