Quando usamos asterisco no comando import

Estava discutindo com alguns colegas quando alguns deles me disseram que usar um asterisco em um import deixa seu programa pesado.

Por exemplo:

import java.io.*;

Eles estavam argumentando que você estará importando tudo o que está no acote io (o que é verdade) e que isto pode sobrecarregar a classe.

Mas a veu ver, o compilador deve dar um jeito nisso facilmente.
Já que basta para ele, na fase de pré-compilamento, mudar o nome das classes usadas pelo nome completo delas, podendo assim eliminar as importações…

Como eu não tinha nenhuma referência bibliografica, preferi não insistir muito na minha opinião.

Por isso, agora estou vindo aqui pedir a opinião de vocês sobre isso.

Abraço.

Realmente o compilador substitui o nome das classes pelo correto

e em bytecode fica normalmente tipo

Ljava/io/File(Nao lembro se é exatamente assim mas é parecido) em todo ocorrencia de File

tambem nao tenho referencia bibliografica…

mas acredito que não faça diferença de desempenho… imagine se vc declara os jars que fazem parte do seu classpath no MANIFEST…
declarar que faz parte do classpath não quer dizer necessariamente que vai ser usado…

mas é só uma opnião…

use o profile do jdk pra averiguar…

É mais uma boa prática, se vc importar mais de 4 classes do mesmo pacote, ai ai invés de ter um monte de linha de import vc usa o * .

[]s

O que eu penso é que o compilador faz algo como transformar um código como

import javax.swing.*;

public class ExemploBorderLayout {

	public static void main(String[] args) {
		JOptionPane.showMessageDialog(null, "a");
		JFrame j = new JFrame();
		JPanel p = new JPanel();
	}
}

em

public class ExemploBorderLayout {

	public static void main(String[] args) {
		javax.swing.JOptionPane.showMessageDialog(null, "a");
		javax.swing.JFrame j = new javax.swing.JFrame();
		javax.swing.JPanel p = new javax.swing.JPanel();
	}
}

antes de compilar.

Afinal, dá-se tanta importância aos compiladores, muitos dos que eu já estudei verificam até as suas expressões booleanas na fase de pré-compilamento, se o compilador Java não conseguir fazer essa simples substituição …

Quando vc usa o * o compilador não importa tudo q vc precisa, mas apenas oq vc usa, e isso de maneira alguma vai deixar o seu programa mais pesado.
Ainda assim o recomendado é colocar o nome completo de cada classe utilizada.