Questões de Tecnologia da Informação · ProGPe UFSCAR

Tecnologia da InformaçãoLinguagem Java e Java EEProGPe UFSCAR 2015

UFSCAR

Questão de Tecnologia da Informação

18

Analise o código abaixo, escrito na linguagem de programação Java: 1. class Torcedor {} 2. class Corinthiano extends Torcedor {} 3. class Palmeirense extends Torcedor {} 4. 5. class Estadio { 6. int i; 7. Torcedor[] torcida; 8. 9. public void inicializar(Torcedor[] t) { 10. torcida = t; 11. } 12. public void adicionar(Torcedor t) { 13. torcida [i++] = t; 14. } 15. } 16. 17. public class Principal { 18. public static void main(String[] args) { 19. Estadio e = new Estadio(); 20. e.inicializar(new Corinthiano[30000]); 21. for(int i=0;i<29999;i++) { 22. e.adicionar(new Corinthiano()); 23. } 24. e.adicionar(new Palmeirense()); 25. } 26. } O código acima compila normalmente. Porém, ao executar esse código, é lançada uma exceção, na linha 24, devido ao uso incorreto de armazenamento em arrays (java.lang.ArrayStoreException). Como prevenir essa situação já durante a compilação, por meio do uso de tipos genéricos? Obs.: as seguintes propriedades devem ser garantidas: (i) na classe Estadio, o array “torcida” somente pode conter objetos da classe Torcedor ou de uma de suas subclasses; e (ii) em uma instância da classe Estadio, o array “torcida” só pode ter um tipo de torcedores: palmeirenses ou corinthianos.

Sua resposta

Mais questões de Linguagem Java e Java EE

Questão de prova oficial, com o gabarito definitivo publicado pela banca. Reproduzida para fins de estudo.