Como fazer um import static em Java
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 certificação Java que aborda todas as peculiaridades da linguagem Java com o intuito de preparar o aluno para a certificação.