2011-08-11 7 views
5

He aprendido que debe llamar a dispose() en objetos de gráficos que haya creado cuando termine de usarlos. Sin embargo, estoy teniendo dificultades para descifrar de la documentación API cuando se crean objetos Graphics.¿Debo eliminar el contexto gráfico devuelto por Component.getGraphics()?

Obviamente, cuando se pasa un objeto Graphics a una devolución de llamada, entonces no lo he creado, y no debo deshacerme de él (o modificarlo de ninguna otra manera por lo que he escuchado), y si llamo Graphics.create(), entonces lo estoy creando y debería deshacerme de él.

¿Pero qué pasa cuando llamo Component.getGraphics()? ¿Esto está creando un nuevo objeto Graphics2D que soy responsable de eliminar, o está devolviendo una referencia a un objeto existente que no debería modificar? La documentación no dice de ninguna manera.

Respuesta

2

Solo dispone de objetos de gráficos que cree explícitamente. Por lo tanto, en su ejemplo, no invocaría a deshacerse del objeto que obtiene de Component.getGraphics(), a menos que su documentación indique explícitamente que el objeto se creó para usted.

+3

Lo que realmente me confundió fue BufferedImage. Tiene un método llamado createGraphics() cuyo nombre insinúa que necesitaría llamar para deshacerme. Pero tiene otro método llamado getGraphics() que devuelve el mismo resultado que createGraphics(), pero no dice nada sobre quién posee el valor devuelto, y me hizo comenzar a preguntar quién posee el valor devuelto de Component.getGraphics(). – pavon

+0

Sí, sé lo que quieres decir. Java realmente no tiene un estándar de nomenclatura o convención cuando se trata de indicar recursos devueltos que requerirán un manejo especial por parte del llamante. Principalmente porque el GC automático brinda tanta cobertura a la memoria mgmt. Probablemente sea mejor consultar el Javadoc en caso de duda y, a veces, incluso el código. – Perception

+0

Esto realmente no responde la pregunta para mí. Entonces, ¿fue el resultado de getGraphics "creado para mí"? ¿O la respuesta a eso puede ser diferente según el contexto? – Amalgovinus

Cuestiones relacionadas