我编写的代码使用GraphicsProgram中屏幕的宽度和高度绘制框,在框中我做其他事情。这些框将是屏幕垂直尺寸(高度)的1/6。
我现在拥有的方式是在我的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导入的。*
您的常量是一个静态字段,但是您使用从实例方法的返回值派生的值对其进行了初始化。实例方法需要一个实例。静态字段不属于实例,因此无法使用实例方法进行初始化。
只要您没有另一种获取高度的方法,您就将首先需要该类的实例。在这种情况下,我个人不会使用常量,因为在重构代码和使用实例成员或局部变量方面没有(或至少很少)缺点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句