This feature is an oddity in SystemVerilog as it generates names that cannot be referenced like an array. It works like macro iteration, but there is no macro iteration feature in SystemVerilog.
If you show us how you are expecting to use this, perhaps there in an alternative data type you could use.
Enum in this case are used to declare names of state for a fsm. The no of states are to be parameterized based on a parameter passed by another module instantiating it.