Assumindo o código abaixo:
31. public enum Title {
32. MR(“Mr.”), MRS(“Mrs.”), MS(“Ms.”);
33. private final String title;
34. private Title(String t) { title = t; }
35. public String format(String last, String first) {
36. return title + “ ” + first + “ ” + last;
37. }
38. public static void main(String[] args) {
39. System.out.println(Title.MR.format(”Doe”, “John”));
40. }
41. }
Qual será o resultado?
A. Mr. John Doe.
B. Uma exceção é disparada em tempo de execução.
C. Falha de compilação provocada por erro na linha 32.
D. Falha de compilação provocada por erro na linha 36.
E. Falha de compilação provocada por erro na linha 39.
O enum da questão terá comportamento de uma classe, com um método principal e seus atributos e comportamentos. Na linha 32 do enum há a listagem dos itens enumerados (atributo): MR, MRS e MS. Neste caso, cada atributo é definido como um objeto de Title com sua respectiva entrada no construtor (o que já define o valor do atributo final title). Como isso é possível, as alternativas C e D serão descartadas.
Por conta dessa inicialização dos atributos, quando um destes for chamado no método principal tem-se então uma instância de Title que pode executar qualquer método que foi implementado no enum. Assim, pode ser chamado o método format na linha 39, já que MR está associado ao construtor MR(“Mr.”), que associa “Mr.” ao atributo title. Essa explicação inviabiliza a opção E. Como os trechos de código de maior dúvida já foram explanados anteriormente, nenhuma execução deve ser disparada ao executar este código. Conclui-se que a opção B se apresenta errônea e apenas a alternativa A está correta.
Alternativa correta: A.
Nenhum comentário:
Postar um comentário