如何引用新的数组对象

时间:2014-05-01 01:40:02

标签: java arrays

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

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()方法,我只需要为创建的框调用它。我想基本上创建一定大小的框,并仅使用方法创建此框。如何在我的ArrayList调用方法中创建这个新框,从它的框中的类开始。拥有。像这样的假代码:this.box.getSize() = 1;

2 个答案:

答案 0 :(得分:1)

您需要Box实例才能使代码生效。在某些时候你应该有这样的东西:

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

然后,您可以在该特定Box对象上调用方法(并注意小写):

box.getSize()

在你的代码中,你有这个(并注意大写):

Box.getSize()

在调用static方法时有效,这是所有 Box实例的常用方法,但这不是调用实例<的正确方法/ em> method - 一个特定于一个对象的对象,它是Box的实例。

答案 1 :(得分:0)

  

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

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

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

这与普通数组不同,其中大小是固定的并且在其构造中指定;例如,Box[] shapes = new Box[16];。但是,这也不会产生任何实际的盒子;只是一个装满null s。

的Box数组

在您执行以下操作之前,您的列表不会包含任何框:

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

我不太确定这是做什么的:

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

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

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

或者:

if (shapes.isEmpty()) {

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