Questão sobre cast

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.

c \o/

Resposta C.

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

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

É 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.

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

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

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

agora tudo faz sentido!!

[quote=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.[/quote]

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