Pegadinha: imports de classes estáticas


Estava estudando alguns algoritmos, ou melhor pegadinhas que poderiam cair na prova do SCJP 5.0 e cai com uma situação, que a princícpio é bastante bizarra (pelo menos ao mer ver). O algoritmo a ser analisado é o seguinte:

JAVA:
  1. import static a.Estatico.foo;
  2.  
  3. public class Main{
  4.  
  5. public static void main(String ... args) {
  6. foo();
  7. }
  8. }

À primeira vista já ia marcar de cara a opção, o código não compila, motivo? Olhe este método ( foo() ), repare que ele não foi declarado em nenhum local. Então na teoria esse código não compilaria.

Em seguida dei uma olhada rápida nos imports, pois achei muito estranho, pois em questões do SCJP é muito raro encontrarmos imports. Assim que percebi, tinha algo a mais. Repare: import static pacote.Classe.metodo.

Uma situação no mínimo interessante, então resolvi testar. A primeira parte do algoritmo é a listagem acima, e a continuação é o código abaixo. Experimente rodar e veja o resultado.

JAVA:
  1. package a;
  2.  
  3. public class Estatico {
  4. public static void foo() {
  5. System.out.println("foo");
  6. }
  7. }

Até a próxima pessoal!

Information and Links

Join the fray by commenting, tracking what others have to say, or linking to it from your blog.


Other Posts
Bug?! ao colocar atributo com mesmo nome de método em html
Revelado o Nokia N96

Write a Comment

Take a moment to comment and tell us what you think. Some basic HTML is allowed for formatting.

Reader Comments

Be the first to leave a comment!