Artigos de Tecnologia e Negócios

Como fazer um import static em Java

Alex Felipe
Alex Felipe

Todos os livros do meu sistema precisa de um nome, autor e um código de categoria. Para identificar o código da categoria eu tenho a classe CodigoCategoria no pacote br.com.caelum.alura.codigo:


package br.com.caelum.alura.codigo;

public class CodigoCategoria {

public static final int AGILE = 1; public static final int FRONT_END = 2; public static final int GAMES = 3; public static final int JAVA = 4; public static final int MOBILE = 5; public static final int WEB = 6; public static final int OUTROS = 7; }

E também tenho a minha classe Livro no pacote br.com.caelum.alura.model:


package br.com.caelum.alura.model;

public class Livro {

private String nome; private String autor; private int codigoCategoria;

public Livro(String nome, String autor, int codigo) { this.nome = nome; this.autor = autor; this.codigoCategoria = codigo; }

//métodos

}

Certo, agora irei criar um livro novo na classe Main no pacote br.com.caelum.alura.main:


package br.com.caelum.alura.main;

public class Main { public static void main(String\[\] args) { Livro novo = new Livro(); } }

Ué, não compila... Como podemos ver, a classe Livro e a Main estão em pacotes diferentes, então precisamos importar a classe Livro.


package br.com.caelum.alura.main; import br.com.caelum.alura.model.Livro;

public class Main { public static void main(String\[\] args) { Livro novo = new Livro("Livro de Java", "João da Silva", /\* qual código??? \*/); } }

Eu não sei qual é o código para livros de Java, então eu vou pedir para a classe CodigoCategoria. Vamos importá-la:


package br.com.caelum.alura.main; import br.com.caelum.alura.model.Livro; import br.com.caelum.alura.codigo.CodigoCategoria;

public class Main { public static void main(String\[\] args) { Livro novo = new Livro("Livro de Java", "João da Silva", CodigoCategoria.JAVA);

System.out.println(novo); } }

Verificando as informações do livro:

 > nome: Livro de Java autor: João da Silva codigoCategoria: 4

Ótimo, eu consegui criar meu livro, mas agora eu quero fazer uma lista de livros:


//package e imports import java.util.ArrayList; import java.util.List;

public class Main { public static void main(String\[\] args) { Livro livro1 = new Livro("Livro de Java", "João da Silva", CodigoCategoria.JAVA); Livro livro2 = new Livro("Livro de Android", "Maria dos Santos", CodigoCategoria.MOBILE); Livro livro3 = new Livro("HTML e CSS", "Rodrigo Teles", CodigoCategoria.FRONT_END);

List<Livro> livros = new ArrayList<Livro>();

livros.addAll(Arrays.asList(livro1, livro2, livro3)); }

}

Consigo criar quantos livros eu quiser sem me preocupar com o código da categoria! Porém ainda tem um detalhe... Veja que todas as vezes que queremos um código, precisamos sempre utilizar o prefixo "CodigoCategoria.", não seria melhor simplesmente digitar JAVA e a classe já saber qual é o código? Já que todas as constante da classe CodigoCategoria são static, podemos fazer o import static. Certo, da mesma forma que nos métodos, sempre usamos o static antes, então faremos static import também:


static import br.com.caelum.alura.codigo.CodigoCategoria.JAVA;

Ops! Não compila! Para fazer qualquer import, SEMPRE escreva a palavra import antes:


//package e imports import static br.com.caelum.alura.codigo.CodigoCategoria.JAVA; import static br.com.caelum.alura.codigo.CodigoCategoria.MOBILE; import static br.com.caelum.alura.codigo.CodigoCategoria.FRONT_END;

public class Main { public static void main(String\[\] args) { Livro livro1 = new Livro("Livro de Java", "João da Silva", JAVA); Livro livro2 = new Livro("Livro de Android", MOBILE); Livro livro3 = new Livro("HTML e CSS", "Rodrigo Teles", FRONT_END); //código

}

}

Resolvemos o problema, porém agora eu terei que digitar uma a uma...poxa, muito chato isso, né? Da mesma forma que importamos mais de uma classe usando o "*", podemos importar todas as constantes estáticas da classe CodigoCategoria:


//package e imports import static br.com.caelum.alura.codigo.CodigoCategoria.\*;

public class Main { public static void main(String\[\] args) { Livro livro1 = new Livro("Livro de Java", "João da Silva", JAVA); Livro livro2 = new Livro("Livro de Android", MOBILE); Livro livro3 = new Livro("HTML e CSS", "Rodrigo Teles", FRONT_END); //código

}

}

O código continua funcionando da mesma forma! E se precisarmos de uma outra categoria? Basta chamar pelo nome da categoria! Simples assim.

E aí, gostou do import estático? Quer aprender mais a fundo a linguagem Java? Pensando nisso o instrutor Guilherme Silveira criou a trilha de certificação Java que aborda todas as peculiaridades da linguagem Java com o intuito de preparar o aluno para a certificação.

Artigos de Tecnologia e Negócios