android 数组初始化

private static final int MAX_VAULE = 24;
private static final DeviceType[] DEVICE_TYPE_MAPPING = new DeviceType[MAX_VAULE];

DeviceType[] values;
for (DeviceType deviceType : values()) {
DEVICE_TYPE_MAPPING[deviceType.getValue()] = deviceType;
}

这段代码正确吗,values()这是什么意思?

理论上是错误的,有以下几个问题:
1、values没初始化就遍历,肯定报错
2、变量定义和循环遍历写在同一层,肯定也是错的

values()这个方法是如何实现的