Я использую игру с двумя игроками, которая будет выполняться в плотном цикле буквально сотни тысяч раз, а затем - производительность.
Мой код выглядит примерно так:
public class Table {
private final int WHITE_PLAYER = +1;
private final int BLACK_PLAYER = -1;
private final int currentPlayer;
private final int otherPlayer;
...
}
Мне было интересно, удастся ли мне получить какой-либо удар производительности, если я захочу заменить
private final int WHITE_PLAYER = +1;
private final int BLACK_PLAYER = -1;
к перечислению, определенному как
public enum Players {
WhitePlayer,
BlackPlayer
}
У меня возникла идея, что перечисления являются просто синтаксическим сахаром над целочисленными константами, а просмотр глазури на байт-код, сгенерированный для тестового перечисления, а также код, вызывающий его, похоже, указывает, что использование их действительно такое же, как вызов статического метода, но для некоторой инфраструктуры перечисления, которая создается при первом запуске.
Является ли мое предположение о том, что на самом деле то же самое можно использовать для перечисления в качестве статических констант, или я что-то здесь не вижу?