我正在创建一个应用程序,我需要存储~250种不同大小和位置的对象,以获得5种不同的屏幕宽高比。
该应用程序检测启动时的比率并检测比率,以便稍后访问对象的位置/大小,如:
someXYZObject.setPosition(Constants.getPosition(SOME_XYZ_OBJECT));
所以我需要在Enums
类中做一些类似Constants
的模式,例如:
class Constants{
// some construction
public enum RATIO_16_9{
ELEMENT1(3f,2f,1f,6f),
ELEMENT2(6f,3f,3f,1f),
ELEMENT3(7f,3f,3f,3f);
//getters, setters, constructor
}
public enum RATIO_5_3{
ELEMENT1(10f,10f,5f,5f),
ELEMENT2(23f,2f,2f,2f),
ELEMENT3(7f,6f,3f,3f);
//getters, setters, constructor
}
// this enum is only for the getter below, to get the right ratio and it's value
public enum Element{
ELEMENT1, ELEMENT2, ELEMENT3;
}
//etc
public static Size getElementsSize(Element val){
//some returns, switches, loops
}
}
这看起来很疯狂,但我想到了这一点并没有“明确的方法”来写这个。我需要在代码中写入1250个值,就是这样。
问题是:
像ELEMENT1(3f,2f,1f,6f)
这样的枚举值是否在应用程序启动时初始化(导致枚举是静态的)并分配内存,或者只有在我调用values()
方法/使enum
类型的对象生成?
我知道这是一个有点愚蠢的问题,但你知道,我只是输了。