我从盒子类创建了一个盒子列表,如:
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;
答案 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 aBox = new Box();
shapes.add(aBox);
我不太确定这是做什么的:
if (Box.getSize() == 0){
如果您想知道列表中有多少个盒子,那么您可以这样做:
if (shapes.size() == 0) {
或者:
if (shapes.isEmpty()) {
如果您想在某个特定的方框中调用getSize()
方法,则必须先创建该方框。