Мне нравится первая статья. Тем не менее, судя по комментариям, некоторые комментарии, касающиеся перечислений Java, могут кое-что прояснить.
Тип Enum в Java - это класс по определению, но многие программисты склонны забывать об этом, потому что они скорее связывают его со «списком допустимых значений», как в некоторых других языках. Это больше, чем это.
Итак, чтобы избежать этих операторов переключения, было бы разумно поместить некоторый код и дополнительные методы в класс перечисления. Практически никогда не возникает необходимости создавать отдельный «реальный класс, подобный перечислению».
Также обратите внимание на документацию - вы хотите задокументировать фактическое значение вашего перечисления в базе данных? В исходном коде, отражающем значения (ваш тип перечисления) или в какой-то внешней документации? Я лично предпочитаю исходный код.
Если вы хотите представить значения перечисления как целые числа в базе данных из-за скорости или по какой-либо другой причине, это отображение также должно находиться в перечислении Java. По умолчанию вы получите сопоставление имени строки, и меня это удовлетворило. С каждым значением перечисления связан порядковый номер, но использовать его напрямую в качестве сопоставления между кодом и базой данных не очень удобно, потому что этот порядковый номер изменится, если кто-то изменит порядок значений в исходном коде. Или добавляет дополнительные значения перечисления между существующими значениями. Или убирает какое-то значение.
(Конечно, если кто-то изменит имя перечисления в исходном коде, сопоставление строк по умолчанию также испортится, но это с меньшей вероятностью произойдет случайно. И вы можете более легко защитить от этого, если необходимо, добавив некоторую проверку времени выполнения и проверьте ограничения в базе данных, как уже было предложено здесь.)
person
Community
schedule
28.04.2009