基本上我所拥有的是每当按下按钮时都会调用的actionListener。按钮位于JDialog中,当我需要时,它是setVisible(true),而当我不需要时,则是setVisible(false)。在actionListener中,我尝试创建一个名为Tile的新对象:
Tile(previewer.pixels, nameValue, (int) hexValue, charValue);
来自构造函数
public int[] pixels;
public String name;
public int color;
public char character;
public int id;
public Tile(int[] pixels, String name, int hex, char character) {
this.pixels = pixels;
this.name = name;
this.color = hex;
this.character = character;
this.id = generateId();
}
这将创建一个具有nameValue,hexValue和charValue属性的新Tile,但是,对于每个新的tile创建了" pixel"的值。有相同的内存地址(我认为)。所以每次我创建一个新的Tile时,所有其他tile的像素值都等于最新的。 previewer.pixels不是静态的,但每次创建磁贴时它都会更改。为什么会这样做?如果我将变量传递给构造函数,并且在创建对象后变量发生更改,它是否会更改对象值?
我尝试创建一个新数组:
final int[] previewerPixels = previewer.pixels;
并将其传递给Tile中的构造函数,但发生了相同的行为。我缺少Java构造函数的某些属性吗?为什么只有Tile的一个变量才会改变?