私は、このようなように、既存のBufferedImageの上に画像を描画したいと思います:Java - キャスト結果のオブジェクトは、キャストされたオブジェクトと同じ参照値を持っていますか?
public static void drawImageOnTopOfOtherImage(BufferedImage a, BufferedImage b) {
Graphics g = a.getGraphics();
Graphics2D g2 = (Graphics2D) g;
g2.drawImage(b);
}
しかし、このインスタンス2つのGraphicsオブジェクト、g
とg2
。グラフィックインスタンスは、メモリの多くを取る、あなたがRAMの使用量を減少させるためにそれらを使用して行われた後、あなたは、このようなように、それらを処分することをお勧めします。
g.dispose();
それはのような何かをする多くの意味になるだろう
public static void drawImageOnTopOfOtherImage(BufferedImage a, BufferedImage b) {
Graphics g = a.getGraphics();
Graphics2D g2 = (Graphics2D) g;
g.dispose();
g2.drawImage(b);
g2.dispose();
}
しかし、キャストの結果のオブジェクトがキャストされたオブジェクトと同じ参照値を持つ場合、これは機能しません。
だから、ここで私の質問は:キャストから結果のオブジェクトは、このようなキャストオブジェクトと同じ基準値を持っています
TypeA a = (TypeA) b;
が
TypeA a = (TypeA) b.clone();
に等しいこと? (グラフィックスオブジェクトはCloneable
ではないので、これは上記のグラフィックスオブジェクトでは機能しません)
を物事をクリアしていますそれは同じ参照ですので、あなたのアイデアは不要で、うまくいきません。 – shmosel