He visto objetos creados en código Java sin almacenar una referencia al objeto. Por ejemplo, en un complemento de eclipse he visto un SWT Shell creado así:
new Shell();
Este nuevo objeto Shell no se almacena en una variable, pero permanecerá referenciado hasta que se elimine la ventana, lo que [creo?] Ocurre de manera predeterminada cuando se cierra la ventana.
¿Es una mala práctica crear objetos como este sin almacenar una referencia a ellos? ¿O fue la biblioteca mal diseñada? ¿Qué sucede si no necesito una referencia, pero solo quiero los "efectos secundarios" del objeto? ¿Debo guardar una referencia de todos modos?
ACTUALIZAR:
Es cierto que mi ejemplo anterior es pobre. Si bien he visto elementos de la interfaz de usuario creados de esta manera, crear un SWT Shell como este probablemente no tenga sentido porque debe llamar al método abierto en la instancia de Shell. Hay mejores ejemplos proporcionados por aix , como los siguientes del tutorial de concurrencia de Java :
(new HelloThread()).start();
Esta práctica se ve en muchos contextos, por lo que las preguntas permanecen. ¿Es una buena práctica?
Shell.createTopLevelShell()o lo que sea, en lugar de usar un constructor en este caso. Pero funcionalmente hay poca diferencia.)
dispose()d: Regla 1: si lo creó, lo dispone. eclipse.org/articles/swt-design-2/swt-design-2.html