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.

Listagem 1. Importação com 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.

Listagem 2. Corrigindo a importação – 1ª Forma.
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.

Listagem 3. Corrigindo a importação – 2ª Forma.
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:

Ballem

Marcio Ballem é bacharel em Sistemas de Informação pelo Centro Universitário Franciscano em Santa Maria/RS. Tem experiência com desenvolvimento Delphi e Java em projetos para gestão pública e acadêmica. Possui certificação em Java, OCJP 6.

Você pode gostar...