Eu sei que com certeza a ‘C’ e a ‘E’ estão certas. Mas a ‘D’ poderia estar certa também, ou não?
Porque apesar de saber que se chamar “wait()” num contexto não-sincronizado será lançada uma exceção, este método não vai gerar um erro de compilação…
Parece ser uma pergunta boba mas eEstou perto de fazer a prova e nao gostaria de cair coisas bestas como estas…
Poderia ocorrer esse tipo de interpretação na prova real?
Cara, particularmente eu acho que questões que perguntam sobre “qual a alternativa correta”, estão questionando se o item especificado é verdadeiro, independentemente se compila, compila com avisos, não complia, compila mas lança exceção em tempo de execução.
Na via das dúvidas, responda pensando em se é verdadeiro ou falso, pois se a questão quiser saber se compila ou não e tantos outros, ela vai deixar explícito o quê é para fazer. Tipo: “quais declarações compilam” ou “qual declaração lançará uma exceção”
Ps: estou respondendo de acordo com os meus estudos para a prova e pelo o quê tenho visto.
Exatamente…
Pensando nisso é completamente válido marcar a opção ‘D’, porque de fato, wait() pode ser chamado em qualquer contexto. Agora, se ele causará uma exceção ou não é uma coisa completamente diferente…
Gostaria de mais opiniões =).
Btw, a resposta no MasterExam é ‘C’ e ‘E’ (o que quer dizer que marcar ‘D’ você leva bomba =P).
Não é que você tenha de decorar o Javadoc (em particular, não caiu nada parecido na minha prova).
Pelo que dizem, o MasterExam tem várias questões que não são parecidas com a da prova, mas não posso afirmar isso porque nunca cheguei a fazer essas questões do MasterExam.
Não é que você tenha de decorar o Javadoc (em particular, não caiu nada parecido na minha prova).
Pelo que dizem, o MasterExam tem várias questões que não são parecidas com a da prova, mas não posso afirmar isso porque nunca cheguei a fazer essas questões do MasterExam.[/quote]
Até aí nada de novo, como já estava no post original. O problema é a pequena diferença entre “can be called” e “should be called”.
Questões deste tipo caem na prova sim. Mas eles tendem a ser cuidadosos com estas pequenas diferenças de interpretação e evitar lugares onde sejam ambíguas (eles tentam evitar este problema, mas pode ser que um ou outro tenha passado despercebido e apareça na prova). Talvez os criadores Master Exam não tenham tido esta preocupação ou tenham dado uma escorregada aí.
Não é que você tenha de decorar o Javadoc (em particular, não caiu nada parecido na minha prova).
Pelo que dizem, o MasterExam tem várias questões que não são parecidas com a da prova, mas não posso afirmar isso porque nunca cheguei a fazer essas questões do MasterExam.[/quote]
Até aí nada de novo, como já estava no post original. O problema é a pequena diferença entre “can be called” e “should be called”.
Questões deste tipo caem na prova sim. Mas eles tendem a ser cuidadosos com estas pequenas diferenças de interpretação e evitar lugares onde sejam ambíguas (eles tentam evitar este problema, mas pode ser que um ou outro tenha passado despercebido e apareça na prova). Talvez os criadores Master Exam não tenham tido esta preocupação ou tenham dado uma escorregada aí.[/quote]
oxi…se ao ser chamado o método gera um exception entao ele NAO pode ser chamado né?
[quote=Frango]oxi…se ao ser chamado o método gera um exception entao ele NAO pode ser chamado né?
vcs tao fazendo confusão com coisa obvia[/quote]
Cara, isso é importante porque deixa a questão ambígua. E a forma como ela é interpretada afeta diretamente o resultado.
Veja assim:
Você pode chamar o método notify passando uma Thread como parâmetro? Não - O compilador não vai deixar.
Você pode chamar o método wait fora de um contexto sincroniado? Sim - Ninguém vai te impedir de fazer isso. Mas se o resultado é o que você espera ou não é outra história.
É mais ou menos o mesmo que:
Você pode se teleportar para a superfície de Marte quando lhe der vontade apenas com a força do seu pensamento? Não.
Você pode se atirar na frente de um caminhão para pegar uma moeda de 50 centavos no chão? Pode, nada te impede de fazer isso. Se isso é algo inteligente ou não de se fazer é outra história.
Chamar o método wait() fora de um contexto sincronizado NÃO gera erro de compilação, gera sim uma exceção em tempo de execução que, como no exemplo acima, pode muito bem ser tratada.