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: