我编写了使用GraphicsProgram中屏幕的宽度和高度绘制框的代码,在这些框中我会做其他事情。这些框将是屏幕垂直尺寸(高度)的六分之一。
现在,在我的run方法中,我创建了一个这样的变量:
int boxHeight = getHeight() / 6;然后,我移到其他方法,如:
placeBox(boxHeight);在我的placeBox方法中,我得到了这样的变量:
private void placeBox(int boxHeight) { ..code.. }所有这些都可以,但我想知道是否可以使用常量,在运行方法之前我会这样声明这些常量:
private static final int constantBoxHeight = getHeight() / 6;但是,这给我带来了以下编译器错误:
non-static method getHeight() cannot be referenced from a static context所以我的问题是:我是否以正确的方式实现常数?如果没有,我如何正确地实现它?另外,如果我试图做的事情是可能的,那么使用常量而不是将我的变量从我的run方法移到它里面的方法,然后将它移动到它里面的其他方法,有什么好处呢?
getHeight()是从acm.Graphics导入的。
发布于 2013-11-02 13:19:11
常量是一个静态字段,但是可以使用从实例方法的返回值派生的值对其进行初始化。实例方法需要实例。静态字段不属于实例,因此不能用实例方法初始化。
只要您没有其他方法获得高度,您将首先需要该类的实例。在这种情况下,我个人不会使用常量,因为重构代码和使用实例成员或局部变量没有缺点(至少很少)。
https://stackoverflow.com/questions/19742246
复制相似问题