Pessoal ando meio enferrujado de Java, surgiu uma dúvida. Qual a diferença de se chamar uma classe na main assim:
public static void main(String args[]) {
new MyJFrame();
}
E assim:
public static void main(String args[]) {
FrameGeral frame = new FrameGeral();
}
Na primeira tú não terá a instancia em um atributo p/ utiliza-lo naquele escopo(método) e a outra você a terá em um atributo/variável.
Instanciando da primeira forma, você aloca na memória uma instancia de MyJFrame, porém não referencia á ela nenhum objeto, logo não conseguirá utilizá-la e o Garbage Collector poderá eliminá-la da memória.
Instanciando da segunda forma você também aloca na memóra uma instancia de MyJFrame, mas dessa vez cria também uma variável (chamada frame
) e referencia esta ao endereço de memória onde a instancia de MyJFrame está. Dessa forma, uma vez que no escopo atual existe referencia entre variável e o objeto na memória, você consegue utilizar a variável como um objeto de MyJFrame e por existir essa referência o Garbage Collector não irá eliminá-la da memória (não elimina se o escopo ainda for válido. Seu escopo, nesse exemplo é o método main
).