Questão Assertion [RESOLVIDO]

23.int z=5; 24. 25. public void stuff1(int x) { 26. assert (x> 0); 27. switch(x) { 28. case 2: x= 3; 29. default: assert false; } } 30. 31. private void stuff2(int y) { assert (y < 0); } 32. 33. private void stuff3() { assert (stuff4()); } 34. 35. private boolean stuff4() { z = 6; return false; }
Which is true?
A. All of the assert statements are used appropriately.
B. Only the assert statement on line 31 is used appropriately.
C. The assert statements on lines 29 and 31 are used appropriately.
D. The assert statements on lines 26 and 29 are used appropriately.
E. The assert statements on lines 29 and 33 are used appropriately.
F. The assert statements on lines 29, 31, and 33 are used
appropriately.
G. The assert statements on lines 26, 29, and 31 are used
appropriately.

Porque a C é a correta? Não entendi porque o assert do default: está correto visto que ele tb está validando um método público… Alguém me esclarece? Vi que existe um tópico sobre isso mas mesmo assim n entendi.

Abs

Presume-se que a declaração na linha 29 nunca será alcançada. Já na linha 31 há uma verificação de parâmetro em um método privado.
No livro da Kathy Sierra há uma explicação muito clara sobre assertivas apropriadas e inapropriadas.
Abrs

Obrigado. Pelo que entendi o assert false é válido quando usado em um lugar em que você sabe que nunca será alcançado.

É isso aí o/