Fala pessoal, estou martelando quanto a uma questão do livro de kathy voltado para o exame (310-055). Para quem possui o livro é a questão 15 da página 397, para os que não possui segue abaixo o seu enunciado:
Given:
class Mineral { }
class Gem extends Mineral { }
class Miner {
static int x = 7;
static String s = null;
public static void getWeight(Mineral m) {
int y = 0 / x;
System.out.print(s + " ");
}
public static void main(String[] args) {
Mineral[] ma = {new Mineral(), new Gem()};
for(Object o : ma)
getWeight((Mineral) o);
}
}
}
And the command-line invocation: java Miner.java What is the result?A. null
B. null null
C. A ClassCastException is thrown.
D. A NullPointerException is thrown.
E. A NoClassDefFoundError is thrown.
F. An ArithmeticException is thrown.
G. An IllegalArgumentException is thrown.
H. An ArrayIndexOutOfBoundsException is thrown.
Adivinhem, mas a resposta é a letra E, e por mais incrível que pareça.
Se vocês colocarem para rodar este código, verão que não acontecerá nenhuma exceção ou erro conforme resposta certa.
De certa forma estou indignado com a resposta, pois não consegui simular esta situação. Fiquei pensando depois, será que porque como estou utilizando o eclipse, de alguma forma posso estar fazendo algo errado.
Efetuei a seguinte modificação e mesmo assim o resultado é o mesmo. Vejam:
package teste;
class Mineral { }
class Gem extends Mineral { }
public class Miner {
static int x = 7;
static String s = null;
public static void getWeight(Mineral m) {
int y = 0 / x;
System.out.print(s + " ");
}
public static void main(String[] args) {
try {
Mineral[] ma = {new Mineral(), new Gem()};
for(Object o : ma)
getWeight((Mineral) o);
} catch (Throwable e) {
System.out.println( "bomba" );
}
}
}
:?
)