Import java.* ou todas as classes ?!?!?!?

Alguém teria alguma explicação sobre isso, faz alguma diferença no meu programa quando:

  • import javax.swing.* // importo o pacote completo
  • import (todas as classes) // quando eu importo todas as classes do meu programa, classe por classe
  • java.util.ArrayList<E> // ou quando eu uso a classes assim, com o nome completo incluindo o pacote

tem alguma diferença de performance ?

Até onde eu sei, o desempenho do seu programa será o mesmo. Usar um import para cada classe em separado pode facilitar um pouco a vida do compilador Java, mas para o programador é só uma questão de conveniência.

Bom dia!

Não há nenhuma diferença de performance, e não serão importadas todas as classes; apenas as classes que você realmente estará utilizando. 

Utilizar:

       import java.util.List;
       import java.util.Date;

ou 

       import java.util.*;

terá o mesmo efeito de performance. O que muda é a "claridade" para o desenvolvedor saber de onde realmente vem a classe que ele está utilizando. Imagine que você tenha muitos imports, todos com o coringa ".*". Quando instanciar as classes, você pode ter problemas para saber qual o pacote da classe que está instanciando... apenas isto... Pelas boas práticas, e por questões de clareza, deve-se evitar imports com os coringas.

Abraço,

Visite o Blog do Perereca: http://www.blogdoperereca.blogspot.com

Quanto a performance, não faz diferença.

Se nao me engano, existe recomendação sobre isso na documentação de padrão de código da SUN. Algo to tipo usar * se tiver mais de 3 imports do mesmo pacote. Como atualmente as IDEs colocam os imports automaticamente, eu tenho deixado import a import mesmo.

Acho que faz diferença (irrelevante) no tempo de compilação, somente.

Puxa eu sempre pensava q a utilização dos coringas nos imports poderia comprometer a performance, por mais ínfimo que fosse este comprometimento …

E olha q acho foi algum professor q comentou isso, senão me engano, hehe …

Vivendo e aprendendo …

O .class que é gerado com ou sem “*” é exatamente o mesmo. Então não há nenhuma diferença em tempo de execução.

Entretanto, eu recomendo importar explicitamente as classes que serão usadas, sem usar “*”, porque você pode ter problemas de recompilar seu código de uma versão para outra do Java, se por acaso você tiver o azar de algo que não era ambíguo em uma versão anterior passar a ser ambíguo em uma versão posterior.
Até por motivos de documentação - uma coisa que odeio em programas C# é que não existe uma opção de importar classe por classe, apenas pacote por pacote.
O que ocorre é que você acaba tendo de olhar o programa C# no Visual Studio para descobrir que classe pertence a qual pacote, ou então (argh) especificar, no uso, o pacote inteiro, o que torna os programas mais verbosos ainda.