Bem, sempre tive como método de programação importar classe a classe apenas as que eu irei usar. Por exemplo, se vou usar as classes ArrayList e Collections, uso:
Queria saber se a utilização do curinga, referenciando uma importação de todo o pacote java.util, realmente tem algum impacto relevante. O compilador realmente importa todo o pacote ou é “inteligente” o suficiente pra determinar apenas o que está sendo utilizado efetivamente?
É relevante somente durante a compilação do bytecode. O import só indica os caminhos por onde o compilador deve buscar classes.
Em tempo de execução isso é irrelevante, e durante a compilação… Tente contar os milissegundos de diferença.
Outra questão é as regras para legibilidade do código…Mas isso é qustão de estilo. Eu particularmente uso os asteriscos…Ficar com 10 linhas de código referenciando o mesmo pacote… Se forem 10 pacotes assim serão 100 linhas… Credo! Acho feio, rss.
O compilador carrega as classes sob demanda, ou seja, só ira carregar aquilo que for utilizado no código.
As “boas práticas” de programação e, se eu não me engano, até as especificações da Sun, recomendam declarar apenas os import’s que serão utilizados no código.
Mas, acredito que 99% da galera que programa concorda, que além de chato pra burro ficar declarando import por import, fazer isso deixa o código poluído d+. rsrsrs… (salve a POG kkkkk…)
Aqui onde trabalhamos tentamos seguir as regras, e fazermos imports individuais. Eu acho até que fica melhor, por que se você estiver usando uma classe que outro programador não conhece ele vai ver que faz parte de tal pacote, seja java, javax, sun ou com e ai vai entender mais fácil o que esta acontecendo.
Mas eu acho que deve fazer diferença sim, porque o compilador não vai ter que procurar no pacote todo para achar a sua classe.
Importação de classes é uma das poucas coisas que não me preocupo pois a maioria das IDEs faz isso automatico, vide o eclipse que com o “shift + ctrl + o” executa uma função que organiza os imports, ou seja, adiciona os usados e remove os não usados.
Pelo que eu sei a única diferença em relação ao uso dos coringas é o que já foi citado: apenas o tempo de compilação irá variar, pois o compilador terá que buscar cada classe importada que será utilizada no programa. Mas o resultado final(arquivo compilado) é o mesmo, não fazendo diferença entre usar os coringas ou não.
Eu uso o * quando tem muita coisa em Swing (Não, eu não uso o NetBeans).
Mas quando não tem coisarada em Swing, eu sempre procuro colocar todos os imports (por questão de estilo mesmo, como o Ricna falou).
Concordo com o Sergio Figueras, mas aqui usamos JCreator pois eu acho que é bem mais leve usamos ele tanto para ME, Swing ou Servlets e por isso temos que fazer os imports na mão.
[quote=Sergio Figueras]Eu também sempre uso sem o asterisco.
Até porque, é só apertar ctrl+shift+o no Eclipse que ele importa só o que vai ser usado. O asterisco pra mim - prejudica legibilidade.[/quote]
No meu caso uso o NetBeans e ele também faz isso automaticamente.
E realmente… A legibilidade do código é prejudicada pelos asteriscos. Quando eu vou digitar manualmente os imports acabo fazendo essa “gambiarra”, mas deixa o visualmente o tamanho do código menor… É só por isso mesmo. Mas com certeza , se outra pessoa quiser se a o objeto é um Connection do java.sql.Connection ou se é um objeto Connection de outro pacote que o usuário criou é melhor deixar bem pontual nos imports. Apesar que isso pode ficar bem claro no contexto do código, ainda mais se ele está bem documentado.