Я пытаюсь реализовать что-то полуэффективно. В моей программе есть перечислитель, представляющий метрики, которые используются для передачи информации в программе.
У меня есть класс, который позволяет мне "объединять" эти метрики в один объект, чтобы я мог по существу создать "предложение", чтобы дать мне сложную информацию без необходимости какого-либо сложного анализа информации. По сути, это битовые флаги, но поскольку я использую enum, их может быть больше, чем 64.
Проблема в том, что если я много раз создаю экземпляры этого класса-контейнера и я собираюсь создать массив следующим образом:
metrics = new boolean[Metrics.values().length];
Я чувствую, что создание массива перечисленных значений так часто, чтобы просто запросить его размер, расточительно. Мне интересно, можно ли просто определить размер перечисляемых значений() в статическом контексте, чтобы это постоянное значение, которое мне не нужно пересчитывать:
private static final int METRIC_COUNT = Metrics.values().length;
Я могу это сделать? Или компилятор не определил перечисленные значения до того, как объявил эту статическую переменную? Я знаю, что это не лучшее объяснение моего вопроса, но я не уверен, как еще это сформулировать.
Я знаю, что статическая переменная будет определена во время выполнения (если назначенное ей значение не было буквальным значением), поэтому сможет ли программа запрашивать членов перечисления Metrics в этот момент выполнения?