Então, GUJNautas, acho que o título já deixa bem claro. Qual o melhor, mais seguro ou mais rápido meio de iniciar um programa?
Eu sempre faço assim:
packagepaz;publicclassMainClass{publicMainClass(){System.out.println("Teste: Olá mundo :D");}publicstaticvoidmain(String[]e){newMainClass();}}
Ou seja, no construtor da classe principal eu dou as ordens que devem ser dadas para o programa rodar e, na mesma classe, coloco o método main e nele uso new MainClass();
Não sei se esse método é seguro nem nada do tipo, mas sempre funcionou bem pra mim então gostaria de saber de vocês do GUJ qual é o melhor :)
Amigão, qual sua definição exata de “seguro” para você, nesse contexto?
Agora, sobre rapidez, seria mais rapido colocar direto no main, sem instanciar a classe.
Ai usar o operador “new” você está dizendo para o java alocar um novo espaço de memória, no exemplo citado não há nenhum motivo para fazer tal operação, só deixará mais lento.
Abs.
diogozero
Eu geralmente coloco o método main em uma classe só pra ele, sem outras responsabilidades. Por exemplo, se tiver que chamar a janela principal da aplicação, é nela que eu vou instanciar e fazer com que ela seja exibida.
War_Paz
diogozero, eu gosto de fazer assim por que ficava p da vida quando o compilador indicava algum erro em tratar um objeto estático de modo não estático, ou vice-versa. Faço assim mais por isso que por outros motivos. Acho que isso também já responde ao LucasHP. Mas então, LucasHP, minha classe principal seria basicamente um main(String[] e), mas eu uso desse modo pra não ter que ficar me preocupando, como já disse, com meios estáticos e não estáticos. Eu não saio instanciando tudo “na doida” já na MainClass do exemplo, dela eu mando criar um objeto, depois aquele outro no decorrer do programa e das necessidades do mesmo. Ainda assim, é um método mais lento?
R
rof20004
Quanto mais memória voce consumir da cpu, mais lento ficará seu programa, pode ter certeza disso, ou seja, a cada novo objeto alocado, 1 endereço de memória é utilizado.
Marcelo_de_Andrade
No exemplo que você postou, não há necessidade para isso, mas está certo.