Dúvidas com relação a instanciação de objetos

Galera sei que para instaciarmos um objeto a sintaxe é:

NomeClasse  obj = new NomeClasse();

Porém sabemos que pode ser tb assim.

NomeClasse obj1, obj2; 
new NomeClasse();

Gostaria de saber se existe outras maneiras de fazê-lo.

Primeiro, a tag não é cod é code…
Segundo, depende.
Existem várias formas, desde o getInstance() até mesmo reflection…

Rigorosamente falando, só é possível criar novas instâncias através do operador new. Mas, segundo disse abaixo o colega drsmachado, muitas vezes é interessante obter novas instâncias através de métodos de fábrica (“factory methods”), ou, mais raramente, pela API de Reflection.

Se é para ser ignorante não responda, deixe para outro!

É por isso que muitas pessoas deixam de usar o GUJ

A única maneira de se obter objetos Java é através do construtor. O uso típico é chamar o operador new, mas um construtor também pode ser chamado por reflection. Tipicamente, a criação de objetos é isolada em classes e métodos de fábrica, para diminuir o acoplamento entre classes, mas mesmo nestes casos, o que esse métodos de fábrica fazem por você é chamar o operador new internamente.