Instância de objetos em Java

Boa noite, pessoal.

Sou iniciante em JAVA e fiquei com uma duvida que com certeza vcs vão esclarece :smiley:

Em todos os livros que estudo java vejo que em todos os exemplos as classes são instanciadas no metodo main para que seja criado o OBJETO e é lá no método main onde todos os dados são inseridos. Porém, analisando um codigo de uma aplicação simples com GUI utilizando SWING, em que o metodo main só era responsavel apenas por inicializar o sistema, não tinha nada de instância de classes. Por favor alguém me explica isso. como o objeto é criado nesses casos ???

A grosso modo o main é o corpo do programa dentro de uma classe. Ao “rodar” a classe no java com o método main, ela vai iniciar o programa. A partir daquele ponto, o Java pode apresentar o resultado a você.

O java AWT Swing tem, no JFrame, um método run() que é chamado na classe que tem o método main() que vai iniciar a GUI.

import java.awt.Container;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;

public class UserInterface implements Runnable {

    private JFrame frame;

    public UserInterface() {
    }

    @Override
    public void run() {
        frame = new JFrame("Title");
    	frame.setPreferredSize(new Dimension(200, 100));

        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        createComponents(frame.getContentPane());

        frame.pack();
        frame.setVisible(true);	
    }

	    private void createComponents(Container container) {
	    }

	    public JFrame getFrame() {
	        return frame;
	    }
	}
public class Main {

    public static void main(String[] args) {
        UserInterface ui = new UserInterface();
    	SwingUtilities.invokeLater(ui);
    }
}
1 curtida

Se você analisar bem, vai ver que no mínimo um new ConstrutorDaClasse() vai ter.
Se usou new então criou a instância de uma classe.

Como o @staroski comentou, é certo que, ao menos um new, existe em todo o código que você viu.
Se não existe, o projeto certamente usa alguma API de injeção de dependências e não é uma aplicação tão simples.
Via de regra, se uma janela se abre, se nesta janela existem campos de texto, botões, etc, existe um new, em algum lugar, mesmo que você não o encontre de imediato.