0

我编写了代码,使用 GraphicsProgram 中屏幕的宽度和高度来绘制框,我在其中做其他事情。这些框将是屏幕垂直尺寸(高度)的 1/6。

我现在拥有它的方式是在我的运行方法中创建一个像这样的变量:

int boxHeight = getHeight() / 6;

然后我转向这样的其他方法:

placeBox(boxHeight);

在我的 placeBox 方法中,我得到了这样的变量:

private void placeBox(int boxHeight) { ..code.. }

这一切都有效,但我想知道是否可以使用常量,我会在我的 run 方法之前声明它,如下所示:

private static final int constantBoxHeight = getHeight() / 6;

但是,这给了我以下编译器错误:

non-static method getHeight() cannot be referenced from a static context

所以我的问题是:我是否以正确的方式实现常量?如果没有,我该如何正确实施?另外,如果我想要做的事情甚至是可能的,那么使用常量而不是将我的变量从我的 run 方法移动到其中的方法然后将其移动到其中的其他方法有什么好处?

getHeight() 是从 acm.graphics 导入的。*

4

1 回答 1

0

您的常量是一个静态字段,但您使用从实例方法的返回值派生的值对其进行初始化。实例方法需要一个实例。静态字段不属于实例,因此不能用实例方法初始化。

只要您没有其他方法来获得高度,您首先需要该类的实例。在这种情况下,我个人不会使用常量,因为重构代码和使用实例成员或局部变量没有(或至少很少)缺点。

于 2013-11-02T13:19:11.030 回答