Fundamentos da Instrução Import
A instrução import da linguagem Java tem como objetivo disponibilizar em uma classe, de um determinado pacote, o acesso a demais classes que estejam em pacotes diferentes. Há duas formas de realizar a importação de uma classe usando a instrução import, a forma explícita e a forma implícita.
A partir do lançamento do Java 5, passou a ser disponibilizada também a importação de membros estaticos através da instrução import.
1. Instrução import
A palavra import é uma das muitas palavras reservadas da linguagem Java e não poderá ser usada como nome de variável. Para importar uma classe devesse usar a instrução import logo após a instrução package, caso exista, e antes da declaração da classe. A instrução será seguida pelo caminho do pacote, delimitado por pontos, e terminará com o nome de uma classe ou um caractere do tipo asterisco, encerrando a instrução com um ponto e vírgula, como mostra a Tabela 1.
| Instrução import | Definição |
| import java.net.*; | Importa todas as classes do pacote java.net. |
| import java.net.URL; | Importa apenas a classe URL do pacote java.net. |
| import static java.awt.Color.*; | Importa todos os membros estáticos da classe Color do pacote java.awt (diposnivel a partir do Java 5). |
| import static java.awt.color.ColorSpace.CS_GRAY; | Importa o membro estático CS_GRAY da classe Color do pacote java.awt (diposnivel a partir do Java 5). |
Tabela 1 – Importação Explícita e Implícita
É sempre uma boa pratica o uso da instrução import de forma explícita (java.util.List) ao invés do uso da forma implícita (java.util.*). Essa é uma boa pratica porque favorece ao programador que ele determine rapidamente quais classes foram importadas.
2. Resolvendo conflitos de classes com o mesmo nome
Algumas vezes podemos ter um problema na importação de classes de pacotes diferentes, mas que tenham o mesmo nome. Por exemplo, se em um determinado código fosse necessário o uso das classes List do pacote java.awt e java.util, como o compilador saberia qual classe está sendo usada em determinado momento de sua declaração? Veja na Listagem 1 um rápido exemplo que faria ocorrer um erro de compilação.
package com.wordpress.mballem.artigos.imports;
import java.awt.List;
import java.util.List;
import java.util.ArrayList;
public class TesteImports {
public static void main(String[] args) {
List awtList = new List();
List utilList = new ArrayList();
}
}
No método main() da Listagem 1 temos duas variáveis locais e ambas do tipo List. Porém a variável awtList é referente a classe java.awt.List e a variável utilList se refere a classe java.util.List. O compilador não vai conseguir identificar qual importação usar para a classe List e então irá gerar um erro de compilação do tipo:
error: java.awt.List is already defined in a single-type import error: incompatible types required: List found: ArrayList
Para resolver esse problema será necessário incluir, em pelo menos uma das declarações do método main() a importação da classe desejada e eliminar a instrução import referente a esta importação. Veja na Listagem 2 como o problema foi solucionado.
import java.awt.List;
import java.util.ArrayList;
public class TesteImports {
public static void main(String[] args) {
List awtList = new List();
java.util.List utilList = new ArrayList();
}
}
Observe que na Listagem 2 foi primeiro eliminada a instrução import java.util.List; em seguida o tipo da variável utilList foi declarado com o nome da classe precedido de seu pacote java.util.List utilList. Outra forma de resolver o problema seria a demonstrada na Listagem 3.
import java.util.ArrayList;
import java.util.List;
public class TesteImports {
public static void main(String[] args) {
java.awt.List awtList = new java.awt.List();
List utilList = new ArrayList();
}
}
Referencia:

