When is an enum constructor called?
<p>I'm implementing a deck of cards as a singleton, using an enum so that I can have universal access to the deck from anywhere in the program.  As part of the enum's constructor, it shuffles an arraylist with every card and pushes them all onto a stack (it just seems symbolically appropriate).</p>

<p>When is that constructor called?  Is it constructed at runtime?  Compile time?  The first time I make a call to the enum?  Can I expect that every time I run the program that the deck of cards will be properly randomized?</p>

<p>Thanks!</p>
