Os posts marcados como "Pegadinha Java" têm a intenção de testar a sagacidade dos meus alunos iniciantes na Programação em Java. São tópicos curiosos e divertidos, e não têm a intenção de medir o conhecimento na linguagem Java.
A vocês, meus alunos, lembrem-se que a idéia é bater o olho no código e apontar a resposta correta. Naturalmente, trata-se de pegadinhas, ou seja, são trechos de código bastante mal-intencionados... :-)
Nesta nova questão, uma perguntinha básica: em Java é possível dar new em Interface?
Antes de me responder, analise o código abaixo: temos uma interface chamada "Exemplo" e no mesmo arquivo, uma inner class chamada "Classe". Logo na primeira linha da classe, encontramos um bendito "new Exemplo()", ou seja, new em Interface.
Em meio ao código, alguns comentários. A parte chata da estória: este código compila sem erros!!!
Mas como? Isto não é proibido?
Copie todo o código junto, cole em um mesmo arquivo com o nome da interface pública (Exemplo.java), compile e ateste: sem erros! Por quê????
Abraço a todos e até o próximo post! :P
/*/ Isto é apenas comentário: abaixo está a interface /*/
public interface Exemplo {
void mostra();
}
/*/ A classe abaixo vai dar new em interface! /*/
class Classe{
Exemplo exemplo = new Exemplo() /*/ (Aqui está!) // ;
/*/ /*/ [Sabia que isto era possível???] /*/
/*/} Eu não sabia! /*/{
public void mostra() {
System.out.println("Interessante!");
}
/*/ >> Pior que isto compila sem erros!! << //
//*; { Por quê? /*/};
}
23 de setembro de 2010
Assinar:
Postagens (Atom)