De acordo com o livro Certificação Sun para Programador Java 5 2a edição, no capítulo sobre orientação a objetos pág. 84, a maioria dos compiladores não perceberá o problema do código apresentado:
class A{
A( ){
this("foo");
}
A(String s){
this( );
}
}
Portanto a compilação ocorrerá e em tempo de execução será lançada java.lang.StackOverflowError.
Acontece que o compilador que estou utilizando percebeu o problema e não permitiu a compilação do código. Diante dessa situação gostaria de saber se esse tipo de questão aparece no exame e qual seria a resposta “correta” para a mesma sendo que dependendo do compilador ela pode ter diferentes resultados?
O fato é que o Java 1.4, 5 e 6 pegam esse erro. Não testei nos anteriores.
Talvez essa história de “a maioria” já esteja um pouco atrasada…
Emerson_Macedo
Na época que eu fiz a prova não caiu nenhuma pergunta maluca desse tipo. Se bem que eu fiz a prova quando era 1.4 ainda.
Sami_Koivu
ViniGodoy:
O fato é que o Java 1.4, 5 e 6 pegam esse erro. Não testei nos anteriores.
Talvez essa história de “a maioria” já esteja um pouco atrasada…
Testei com 1.3.1_20 e ele não pegou esse erro. Mas realmente concordo com o Vini.
De qualquer forma, eu achei a prova da Sun muito boa nesse sentido (comparando, por ex., com Oracle, BEA, etc), a qualidade é legal e acho difícil eles colocarem uma pergunta tão subjetivo assim na prova.
[]s,
Sami
anderson.bonavides
Eu responderia sem medo de errar: StackOverFlowError Isso é um estouro de pilha vizivel e a prova pede que vc tenha conciência dos tipos de exeções existentes. StackOverFlowError é uma exceção que acontece por chamadas profundas. Outro exemplo de StackOverFlowError seria com métodos fazendo chamadas recursivas.
Ex:
void method_1(){
method_1();
}
A recursão ocorre e tua JVM estourará causando a exceção. Então na minha opinião se por acaso cair marque sem erro. Eu marcaria sem medo de errar.
LPJava
compare isso com aquele cara q fica toda hora ti perguntando a mesma coisa… o que acontece com vc uma hora? A mesma coisa acontece com a JVM Estouro