Questão sobre cast

8 respostas
marciosouzajunior

Pessoal, nessa questão aqui sobre cast. Qual seria a resposta de vocês?

class Building {
	
}

public class Barn extends Building {
	
	public static void main(String[] args) {
		
		Building build1 = new Building();
		Barn barn1 = new Barn();
		
		Barn barn2 = (Barn) build1; 		//10
		Object obj1 = (Object) build1; 		//11
		String str1 = (String) build1; 		//12
		Building build2 = (Building) barn1;       //13
	}
	
}

A. If line 10 is removed, the compilation succeeds.
B. If line 11 is removed, the compilation succeeds.
C. If line 12 is removed, the compilation succeeds.
D. If line 13 is removed, the compilation succeeds.
E. More than one line must be removed for compilation to succeed.

8 Respostas

evertonsilvagomesjav

c \o/

F

Resposta C.

Pois os tipos Building e String não estão na msm árvore de herança.

F

E a linha 10 vai dar um erro de em tempo de execução.

marciosouzajunior

É verdade, a questão é se o código compila e não se ele executa.
Estou caindo em mtas pegadinhas desse tipo. Foi bom pra ficar esperto.

F

Também responderia C, só não entendi o motivo do erro na linha 10!

evertonsilvagomesjav

A linha 10 gera um ClassCastException pq um objeto Building nao È-UM Barn, e sim ao contrario um Barn È-UM Building.

F

Ahh sim, confundi o 10 da formatação (a esquerda) com o 10 presente no comentario

agora tudo faz sentido!!

adolfo_eloy

marciosouzajunior:
É verdade, a questão é se o código compila e não se ele executa.
Estou caindo em mtas pegadinhas desse tipo. Foi bom pra ficar esperto.

Pois é Márcio, esse tipo de questão também tem me causado problemas. :smiley:
Temos que nos atentar para o objetivo 5.2 do exame (que pode ser estudado no capítulo 2 do livro da Kathy Sierra).

Section 5: OO Concepts

Criado 20 de outubro de 2010
Ultima resposta 7 de nov. de 2010
Respostas 8
Participantes 5