Sealed classes em Java 17
Gabarito: letra C. A funcionalidade do Java 17 que permite restringir a herança de uma classe a um conjunto específico de subclasses é a sealed class (classe selada). Com o modificador sealed e a cláusula permits, o programador declara quais classes podem estender a superclasse, exatamente como José pretendia ao especificar que CGEPrincipal só poderia ser herdada por CGEUm e CGEDois.
Alternativa A — ❌ Incorreta
Reflection é um mecanismo para inspecionar e manipular classes, métodos e atributos em tempo de execução. Não serve para restringir a herança na declaração da classe.
Alternativa B — ❌ Incorreta
Static class em Java refere-se a uma classe aninhada estática, que não restringe a herança de sua classe externa. Não é o recurso adequado.
Alternativa C — ✅ Correta ⟵ GABARITO
Sealed class (introduzida no Java 17 pela JEP 409) permite que uma classe ou interface restrinja quais outras classes ou interfaces podem estendê-la ou implementá-la. A sintaxe é:
public sealed class CGEPrincipal permits CGEUm, CGEDois { ... }
Isso garante que apenas as classes listadas em permits possam herdar de CGEPrincipal.
Alternativa D — ❌ Incorreta
Foreign Function & Memory API (FFM API) é uma funcionalidade para interoperar com código e memória nativos (C/C++). Não tem relação com herança.
Alternativa E — ❌ Incorreta
Pattern Matching é um recurso que simplifica a verificação de tipos e a extração de dados em expressões instanceof e switch. Não controla a herança.
Gabarito: letra C (sealed class).