Qual a diferença?

Pessoal, queria saber se existe alguma diferença, além da estética, quando se importa com o “*” ou importando diretamente??

Assim:

import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.JLabel; import javax.swing.JButton; import javax.swing.JPanel; import java.awt.Rectangle; import java.awt.Font; import java.awt.Color; import java.awt.Toolkit; import javax.swing.BorderFactory; import javax.swing.UIManager; import javax.swing.SwingUtilities; import javax.swing.Icon; import javax.swing.ImageIcon; ...

…ou assim:

import javax.swing.*;
import java.awt.*;

Além, é claro, da estética de ser mais abranjente??

Ao nomear as classes uma a uma ao invés de usar o *, o código fica mai legível (pois você sabe exatamente quais classes do pacote você está usando no código)

por exemplo

javax.swing.JButton;
javax.swing.*;

a primeira só está importando a classe JButton então você só poderá usar essa classe desse pacote

a segunda está importando todas as classes do pacote javax.swing tais como JButton, JComboBox, JList, JTextField, JTextArea, JLabel…e por aí vai…

Oie gente…

além dessas diferenças que foram expostas, existe alguma diferença relacionada a performance?? E com relação à boas práticas, qual seria a melhor maneira de fazer?? classe a classe, ou o pacote todo (*) ??

Abs
Patty

Performance ---- Não

Boa Prática ---- Melhor indicar classe por classe pelo motivo já citado anteriormente

Então quer dizer que a unica diferença é a questão de boa pratica, ja que por questões de performace ou qualquer outra coisa do genero não ha melhorias, por exemplo no aplicativo final pro cliente?

Sim.
Pode também ter conflito de nomes.
Por exemplo, existe a classe java.awt.List e a interface java.util.List.
Se você usa * nos 2 e aparece List no seu arquivo, qual dos dois é o certo?

Não sei se tem algum problema com performace, mas o compilador primeiro executa os imports explicitos “import javax.swing.JFrame”, depois é feito os imports das classes do mesmo pacote e por ultimo é feito os imports das classes implicitas (classes de pacote “import javax.swing.*”).

Falow

o ‘*’ não significa que todas as classes serão linkadas, o compilador faz as otimizações necessárias. Problema de performance só na hora de compilar, não na hora de executar.

dá uma olhada também no ‘static import’ do Java 5… eh uma funcionalidade interessante tb…