Desvendando o método main do Java

Desvendando o método main do Java

Fala galera blz 😀

Hoje vamos falar sobre um método que sempre usamos e é praticamente o primeiro método que executamos quando estamos aprendendo a linguagem Java. Sim, estou falando do método main, aquele onde executamos o famoso “Hello World” – “Olá Mundo” quando entramos nesse mundo da programação.

Porque falar sobre ele? Porque eu me “toquei” que nunca tinha visto artigo sobre o main e achei isso meio triste rsrsrsr.

Ele tem alguns pontos interessantes e curiosos você sabia?

O método main é o ponto de entrada de qualquer programa Java e desde a primeira versão, ele tinha a seguinte assinatura:

public static void main(String[] args) {}

Mas, você sabia que temos outras formas de usar o método main?

A partir do Java 8, podemos usar a interface funcional Consumer para nos dar mais “poder” com o método:

public static void main(String[] args, Consumer<String[]> consumer) {}

Com essa alteração, podemos criar um Consumer que processe um ou mais argumentos passados para o programa.

Suponha que você tem um programa Java que faz alguma manipulação qualquer em um array de strings. Então você deseja permitir que o usuário forneça o array de entrada a partir da linha de comando. Você pode usar o Consumer<String[]> para aceitar esse array de entrada, como mostrado no exemplo abaixo:

public class MeuPrograma {
    public static void main(String[] args, Consumer<String[]> consumer) {
        // Chama a função fornecida pelo usuário com o array de argumentos da linha de comando
        consumer.accept(args);
      
       // Faz alguma manipulação no array de entrada
    }
}

Em seguida, o usuário pode fornecer uma função para manipular o array de entrada, como mostrado abaixo:

public class Teste {
    public static void main(String[] args) {
        MeuPrograma.main(args, (input) -> {
            // Imprime o array de entrada (input) 
            System.out.println("Array de entrada: " + Arrays.toString(input));
        });
    }
}

O método main do programa MeuPrograma é chamado a partir do método main do programa Teste, e é passado um lambda como o segundo parâmetro.

        //lambda que imprime o array
        (input) -> {
            // Imprime o array de entrada (input) 
            System.out.println("Array de entrada: " + Arrays.toString(input));
        }

O lambda simplesmente imprime o array de entrada fornecido pelo usuário. Quando o método MeuPrograma.main é chamado, ele chama a função fornecida pelo usuário com o array de argumentos da linha de comando e, em seguida, faz alguma manipulação no array de entrada.

/> java Teste argumento1 argumento2

Array de entrada: [argumento1, argumento2]

Bacana né? Sabia dessa?

A título de curiosidade, podemos também a partir do Java 9, “omitir” o método main em determinadas situações, se o programa não tiver uma carga de inicialização específica . Nesse caso, podemos usar a opção -m do comando java para especificar o módulo que deve ser executado.

É necessário para isso, que o programa seja organizado em um módulo e que esse módulo especifique a classe que deve ser executada, por meio de um arquivo de configuração module-info.java, dessa forma o metodo main será inferido a partir do arquivo module-info.java.

Essa abordagem pode ser útil em projetos grandes que utilizam módulos para organizar o código e reduzir as dependências entre as classes. Com essa opção, podemos especificar qual classe deve ser executada de forma mais clara e legível.

Porém, não quero entrar nesse ponto, pois quero mostrar a mudança na assinatura do método, então voltemos ao main 😀

Olha o tanto de coisa que envolve um simples método main, não é ?

//primeira variante, versão tradicional e mais usada
public static void main(String[] args) {}

//segunda variante, a partir do Java 8
public static void main(String[] args, Consumer<String[]> consumer) {}

E ai gostou de saber mais sobre o método main? Sabia dessas variantes? Já usou alguma?

Eu particularmente uso o que normalmente a IDE me entrega/gera, então estou na primeira opção rsrsr,. Enfim, independente do qual você utiliza e a forma que utiliza, o importante é entender o que está fazendo.

Até a próxima 😉

244 Comments on “Desvendando o método main do Java

  1. Can I show my graceful appreciation and speak out on really good stuff and if you want to really findout?
    Let me tell you a brief about how to become a millionaire I am always
    here for yall you know that right?

  2. Hi there I am so delighted I found your web site, I really found you by error, while I was researching on Bing for something else,
    Regardless I am here now and would just like to say thank you for a remarkable post and a all
    round enjoyable blog (I also love the theme/design), I don’t have time to go through it all at the
    minute but I have book-marked it and also added in your RSS feeds, so
    when I have time I will be back to read a lot more, Please do keep up the superb
    jo.

  3. Compre su licencia de conducir en línea. ofrecemos durabilidad, calidad de impresión excepcional y una impresión general de calidad y autenticidad. Analice una variedad de funciones, como códigos de barras, bandas magnéticas, chips inteligentes y superposiciones holográficas. También incluyen laminados holográficos que añaden autenticidad a las tarjetas.
    comprar licencia de conducir

  4. real driving license and registered on our website without taking any exam or taking the practical test. all we need is your details and it would be logged into the system within the next eight days. The driver’s license must go through the same registration procedure as those issued at driving schools,
    https://comprarcarnetdeconducirr.com/

  5. Are you planning to get an Australian driver’s license? You’re in the right place! This guide covers all you need to know about obtaining a license, from legal requirements to the application process. Despite a robust transportation system, having your vehicle is crucial in Australia due to its vastness, making a license a legal necessity. Australia values road safety, enforcing strict traffic laws with a zero-tolerance policy for offences. Although some find the driving assessment challenging, proper learning ensures success on your first try, tap on the link below for more information.
    https://getaustraliandriverslicense.com/

  6. cumpara permis de conducere înregistrat online,( https://documentromanesc.com//) cumpărați sau viză online, un pașaport fals înregistrate, cărți de identitate false autentice, cumpărați certificat de căsătorie originală și false, cumpărați diplome înregistrate și false.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

*

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.