Java: Conheça o método main
Certificação Oracle
Estou estudando para a certificação da Oracle e preciso saber todas as restrições do método main. Então vamos implementá-lo ora bolas:
public static void main(String [] args){
System.out.println("executando código"); }
Rodando a minha aplicação:
> executando código
Ótimo, mas eu sempre terei que escrever o método main
da mesma maneira? Será que não da pra modificar alguma coisa? Vamos tentar executar sem o modificador de acesso public:
static void main(String[] args){
System.out.println("executando codigo"); }
Executando o código:
Erro: o método main não foi encontrado na classe Main; defina o método main como: public static void main(String[] args)
Parece que não deu muito certo, ele não consegue achar o main
... Vamos tentar agora sem o static:
public void main(String[] args){
System.out.println("executando codigo"); }
Testando mais uma vez:
Erro: o método main não é static na classe Main; defina o método main como: public static void main(String\[\] args)
Xi, tem que ser static também... Bom e o void
? Vamos ver se eu consigo retornar um int
:
public static int main(String[] args){
System.out.println("executando codigo"); return 1; }
Verificando novamente:
Erro: o método main deve retornar um valor do tipo void na classe Main; defina o método main como: public static void main(String[] args)
É, parece que ele não permite nenhuma alteração... E esse args
? Eu nem uso ele, então eu vou tentar tirar!
public static void main(){
System.out.println("executando codigo"); }
Erro: o método main não foi encontrado na classe Main; defina o método main como: public static void main(String\[\] args)
Puxa vida, será que não podemos alterar nada? Vamos tentar então, alterar o tipo do array args
para outro, por exemplo, um int
:
public static void main(int[] args){
System.out.println("executando codigo"); }
Erro: o método main não foi encontrado na classe Main; defina o método main como: public static void main(String[] args)
Aparentemente, precisamos escrever a assinatura do main
como o conhecemos... Mas e se eu tentar variar o array de String
(String[] args
)? Em outras palavras, que tal tentarmos um varargs de String
? Vejamos o que acontece:
public static void main(String ... args){
System.out.println("executando codigo"); }
Testando minha aplicação novamente:
> executando código
Finalmente a minha aplicação rodou! Além de apenas variar de array de String
para varargs, podemos também alterar o nome do parâmetro, não precisa ser args
, pode ser qualquer nome:
public static void main(String[] variavel){
System.out.println("executando codigo"); }
Testando novamente:
> executando código
Excelente! Agora eu sei quais são as restrições para declarar o método main
:
Como vimos, para nossa aplicação executar precisamos do método main
, porém o Java só entende que é o método main
na nossa aplicação se seguir essa assinatura: public static void main(String[] args)
. Vimos também, que a única alteração permitida é alterar o array de String
para um varargs de String
, pois na prática funcionará da mesma maneira.
Não sabia que o método main era tão restrito? Quer se aprofundar mais na linguagem Java? Aqui na Alura temos uma formação Java.