Já sabemos que o Java possui pacotes da sua API e geralmente importamos classes do pacote java.util
.
Nesse tutorial vamos mostrar como você criar seus próprios pacotes no: GNU/LINUX, *BSD, macOS e no WSL/Windows e importá-los para seus próprios projetos .
Suponhamos que você crie uma classe com um único método e deseja disponibilizá-lo para quem quiser importar:
vim MinhaClasse.java
Na primeira linha use a palavra reservada package
seguido de espaço e o nome que você deseja para seu pacote, exemplo: MeuPacote;
e depois crie sua classe com o(s) métodos que deseja compartilhar, exemplo public void meuMetodo()
, que só retorna uma frase qualquer:
package MeuPacote;
public class MinhaClasse {
public void meuMetodo(){
System.out.println("Esse é o meu pacote!");
}
}
Agora vamos criar o diretório do pacote já com essa classe com o comando:
javac -d . MinhaClasse.java
Note que dentro do seu projeto(nesse caso: sandbox) agora há um diretório de nome MeuPacote/
com os seguintes arquivos dentro e fora dele:
tree
sandbox/
sandbox/
├── MeuPacote
│ └── MinhaClasse.class
└── MinhaClasse.java
1 directory, 2 files
Se quiser já podemos até remover o arquivo sandbox/MinhaClasse.java
e agora o projeto(sandbox) só haverá um diretório e dentro dele um arquivo MinhaClasse.java
que não foi o que removemos e sim o arquivo dentro do diretório MeuPacote:
sandbox/
└── MeuPacote
└── MinhaClasse.class
1 directory, 1 file
Agora vamos importar nosso pacote em outro arquivo, um outro projeto que você esteja criando:
vim MeuPrograma.java
import MeuPacote.MinhaClasse;
public class MeuPrograma {
public static void main(String[] args) {
MinhaClasse obj = new MinhaClasse();
obj.meuMetodo();
}
}
Ou seja, ao instanciar a classe do pacote e chamar o método, o mesmo é executado com sucesso:
javac MeuPrograma.java
java MeuPrograma
Possível e provável saída:
Esse é o meu pacote!
.
Vamos supôr que você tem uma nova classe e deseja adicionar ao seu pacote: MeuPacote
package MeuPacote;
public class NovaClasse {
public String novoMetodo(){
String name = "Só para exemplo";
return name;
}
}
Agora rode:
javac -d . NovaClasse.java
Se quiser depois de rodar o comando, remova o arquivo:
rm ./NovaClasse.java
Agora no seu código MeuPrograma.java
importe também essa classe NovaClasse
:
import MeuPacote.MinhaClasse;
import MeuPacote.NovaClasse;
public class MeuPrograma {
public static void main(String[] args) {
MinhaClasse obj = new MinhaClasse();
NovaClasse obj2 = new NovaClasse();
obj.meuMetodo();
System.out.println(obj2.novoMetodo());
}
}
Após compilar e rodar a possível saída será:
Esse é o meu pacote!
Só para exemplo
Se quisésse importar todas as classes do seu pacote, basta usar: import MeuPacote.*;
:
MeuPrograma.java
import MeuPacote.*;
public class MeuPrograma {
public static void main(String[] args) {
MinhaClasse obj = new MinhaClasse();
NovaClasse obj2 = new NovaClasse();
obj.meuMetodo();
System.out.println(obj2.novoMetodo());
}
}