对于类

时间:2016-01-01 18:12:55

标签: java parameters actionlistener memory-address

基本上我所拥有的是每当按下按钮时都会调用的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的一个变量才会改变?

0 个答案:

没有答案