首页 > 解决方案 > 为什么将图像复制到新变量中不会复制数据而是复制指针?

问题描述

当我做某事时:

BufferedImage image = otherImage;

image受到otherImage影响也受到影响?

标签: java

解决方案


这就是 java 内存模型的工作原理。放置在堆中的所有对象。在您的方法框架中,您只能访问指向此对象的链接。您可以通过此链接操作对象。您发布的声明说您希望获取第二个链接并将其引用到与第一个链接所引用的对象相同的对象。

如果您需要复制对象,您需要自己关心它。有几种方法可以实现这一点。例如,您可以制作一些复制方法,该方法将获取初始对象,获取其字段,创建一个新实例,并将这个新创建的对象的字段设置为先前提取的字段。

UPD:看看这个。有关于 BufferedImage 的具体案例的解释。但似乎问题需要更新并标记为重复。


推荐阅读