Artigos de Tecnologia e Negócios > Programação

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

Leia também:

Artigos de Tecnologia e Negócios > Programação

Cursos profissionais de Programação é na Alura, comece agora!

  • 1120 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1120 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1120 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1120 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?
Acesso por 1 ano
Estude 24h/dia onde e quando quiser
Novos cursos toda semana