Java枚举什么时候初始化?

时间:2016-09-11 19:58:44

标签: java enums

我正在创建一个应用程序,我需要存储~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类型的对象生成?

我知道这是一个有点愚蠢的问题,但你知道,我只是输了。

0 个答案:

没有答案