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.
Eu e mais alguns colegas de trabalho iniciamos um grupo de estudo para a certificação SCJP. Postaremos aqui todas questões estudadas, suas respectivas respostas e nossos comentários sobre elas. Espero que seja tão útil para quem lê, quanto é para nós...
Mostrando postagens com marcador Enum. Mostrar todas as postagens
Mostrando postagens com marcador Enum. Mostrar todas as postagens
quarta-feira, 4 de agosto de 2010
Questão 18 -
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.
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.
Marcadores:
Enum
Questão 10 - ENUM
De acordo com o código abaixo:
21. public class Ball {
22. public enum Color { RED, GREEN, BLUE };
23. public void foo() {
24. // insert code here
25. { System.out.println(c); }
26. }
27. }
Que código inserido na linha 24 causa ao método “foo” imprimir RED, GREEN e BLUE?
A. for(Color c : Color.values())
B. for(Color c = RED; c <= BLUE; c++)
C. for(Color c; c.hasNext() ; c.next())
D. for(Color c = Color[0]; c <= Color[2]; c++)
E. for(Color c = Color.RED; c <= Color.BLUE; c++)
Operadores de incremento e comparação não podem ser aplicados a tipos de enumeração, o que inviabiliza a execução dos códigos presentes nas alternativas B, D e E. A opção C está incorreta já que em um enum não há implementação dos métodos hasNext() e next(). E ainda, os elementos de um enum não podem ser acessados por índices, mas sim pela notação “.” (dot notation). Concluindo, apenas a opção A possui uma codificação correta usando uma alternativa criada desde a versão 1.5 da linguagem para acesso a todos os elementos de uma coleção ou enumeração.
Alternativa correta: A.
21. public class Ball {
22. public enum Color { RED, GREEN, BLUE };
23. public void foo() {
24. // insert code here
25. { System.out.println(c); }
26. }
27. }
Que código inserido na linha 24 causa ao método “foo” imprimir RED, GREEN e BLUE?
A. for(Color c : Color.values())
B. for(Color c = RED; c <= BLUE; c++)
C. for(Color c; c.hasNext() ; c.next())
D. for(Color c = Color[0]; c <= Color[2]; c++)
E. for(Color c = Color.RED; c <= Color.BLUE; c++)
Operadores de incremento e comparação não podem ser aplicados a tipos de enumeração, o que inviabiliza a execução dos códigos presentes nas alternativas B, D e E. A opção C está incorreta já que em um enum não há implementação dos métodos hasNext() e next(). E ainda, os elementos de um enum não podem ser acessados por índices, mas sim pela notação “.” (dot notation). Concluindo, apenas a opção A possui uma codificação correta usando uma alternativa criada desde a versão 1.5 da linguagem para acesso a todos os elementos de uma coleção ou enumeração.
Alternativa correta: A.
Marcadores:
Enum
Assinar:
Postagens (Atom)