So, this pretty much works like an enum that can extended with additional numeric values on the fly.
But doesn't this implementation kind of defy the purpose of having an enum-like functionality in the first place?
But doesn't this implementation kind of defy the purpose of having an enum-like functionality in the first place?
The static quality of enums is only one of their features, and sometimes a hindrance, and it good to have other options.
I see "here is something that looks like an enum, and its possible values are gold, silver and bronze. But you can also give 10, 42 or any number as a value and it will still work".
I don't mean to be overly critical (clearly this approach has worked well for the author), but I am a bit unsure about the perceived benefits.
I might have used an enum plus a second constructor to wrap the explicit conversation. I guess it depends on what's going on in the rest of the API.