我从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];
。然而,这也不会创建任何实际的框;只是一个装满null
s的盒子阵列。
您的列表中不会包含任何框,除非您执行以下操作:
Box aBox = new Box();
shapes.add(aBox);
我不太确定这意味着什么:
if (Box.getSize() == 0){
如果你想知道列表中有多少个盒子,那么你可以这样做:
if (shapes.size() == 0) {
或者:
if (shapes.isEmpty()) {
如果您想在某个特定的框上调用getSize()
方法,则必须首先创建该框。