如何引用新的数组对象



我从box类创建了一个box列表,如下所示:

private static final List<Box> shapes = new ArrayList<Box>(16);

我有一个keyevent方法,它调用类来更改框的大小。

if (Keyboard.getEventKey() == Keyboard.KEY_1 && Keyboard.getEventKeyState()) {
    if (Box.getSize() == 0){
         shapes.add(new Box(0, 463, "r"));
    }
}

对于这里使用的getSize()方法,我只需要为创建的框调用它。我想基本上创建一个特定大小的盒子,并只对创建的这个盒子使用方法。我如何让这个新的box在我的ArrayList调用方法中从box类自己创建。类似这样的伪代码:this.box.getSize() = 1;

您需要Box实例才能使代码工作。在某个时候,你应该有这样的东西:

Box box = new Box(param1, param2, param3);

然后可以调用特定Box对象上的方法(注意小写(:

box.getSize()

在你的代码中,你有这样的(注意大写(:

Box.getSize()

这在调用static方法时有效,该方法对Box所有实例都是通用的,但它不是调用实例方法的正确方法,该方法是Box实例对象特有的方法。

我从盒子类创建了一个盒子列表,比如:

private static final List<Box> shapes = new ArrayList<Box>(16);

首先,这行代码不会创建任何框。它创建了一个可以容纳框的列表,但它一开始是空的。ArrayList的构造函数中的16只是其内部数组的初始容量——这只是一种性能优化,以减少以后内部内存的重新分配。新ArrayList的大小0

这与普通数组不同,普通数组的大小是固定的,并在构造中指定;例如Box[] shapes = new Box[16];。然而,这也不会创建任何实际的框;只是一个装满nulls的盒子阵列。

您的列表中不会包含任何框,除非您执行以下操作:

Box aBox = new Box();
shapes.add(aBox);

我不太确定这意味着什么:

if (Box.getSize() == 0){

如果你想知道列表中有多少个盒子,那么你可以这样做:

if (shapes.size() == 0) {

或者:

if (shapes.isEmpty()) {

如果您想在某个特定的框上调用getSize()方法,则必须首先创建该框。

最新更新