【问题标题】:How to add different versions of the same object?如何添加同一对象的不同版本?
【发布时间】:2013-04-30 15:40:47
【问题描述】:

我目前正在尝试每次发生事件时将一系列对象添加到arrayList,我使用以下方法:

public void nativeMousePressed(NativeMouseEvent e) {

    if(record == true)
    {
        getInfo inf = new getInfo();
        infoCtrl info = new infoCtrl();
        info.setX(e.getX());
        info.setY(e.getY());
        infor.add(inf);


    }


}

Arraylist 是全局的,我也有一个全局控制器,我在这里制作了一个,我尝试使用两者。这个版本的代码只有需要的行,但是在真正的方法中,我用 println 测试每一位,每次,值都在那里,但是在我将对象添加到 arrayList 之后,一切都回到了 0,就像当首先创建对象。

谁能看出这个问题以及如何解决它?

谢谢

注意:当我打印列表的内容时,我得到了我添加到其中的所有对象,但它们的所有值都是 0,就像它们刚刚创建一样,即使在此之前我有一个println 完美地向我展示了他们的价值观。

【问题讨论】:

    标签: java methods null createprocess


    【解决方案1】:

    您将值填入info,然后将inf 添加到列表中。

    提示 - Java 的标准约定是所有类都以大写字母开头。这意味着您将getInfo 更改为GetInfoinfoCtrl 更改为InfoCtrl。由于您没有遵循约定,因此很难判断您是如何处理列表对象(或者它是一个类)infor。 (我们通常发现使用较长的名称有助于保持直截了当。)

    【讨论】:

    • 是的,我这样做,info是inf的控制器,问题出在哪里?
    • 我想我不知道您所说的 X 控制器是什么意思,而且我看不出这两个对象如何从您提供的代码中了解彼此。通常会有像inf.setController(info) 这样的电话来执行此操作。
    • 是的,我很抱歉,简单地说,getInfo 是模型包中的一个对象,infoCtrl 是它的控制器,ArrayList infor 是一个 getInfo 类型的列表
    • 好的。控制器如何知道模型或模型如何知道控制器。您创建了两个新实例,但没有显示任何代码来连接它们。这就是我能说的。要么您需要问题中的更多信息,要么您缺少连接这些信息的东西。
    • 简单地说,我将控制器实例化,然后它的构造函数创建了一个 getInfo 类型的对象 public infoCtrl() { info = new getInfo(); } 然后它通过诸如 public void setWheelDir(int wheelDir) { info.setWheelDir(wheelDir); 之类的方法修改它的所有值。 } public int getWheelAmount() { return info.getWheelAmount(); }
    猜你喜欢
    • 1970-01-01
    • 2012-10-23
    • 2012-07-30
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 2010-10-13
    • 2019-10-12
    • 2019-09-21
    相关资源
    最近更新 更多