what is Java best practice to handle enum's
<p>hi I know Java for a long time and recently I have been diving deep to the Java world.
As an experienced c# developer I find it odd to use Java enum's.
For example if I show on console items such as :</p>

<pre><code>public enum AdminOpertionFirstlayer 
{MANAGE_SUPPLY,
 MANAGE_CUSTOMERS_SERVICE,
 ORDERS_MANAGEMENT,
 REPORTING_OPRATIONES}
</code></pre>

<p>I find it hard to write them down to the user , cause I have to define new varible</p>

<pre><code>*AdminOpertionFirstlayer []adminOpertionFirstlayerArr =
     AdminOpertionFirstlayer.values();
</code></pre>

<p>in order to achieve this : </p>

<pre><code>for (int i = 0; i &lt; adminOpertionFirstlayerArr.length; i++) {
    String s = String.format("%d. %s",
                             i+1,
                             adminOpertionFirstlayerArr[i].toString());
    Screen.print(s);
}

AdminOpertionFirstlayer chosen= adminOpertionFirstlayerArr 
                                [(Integer.parseInt(dataIn.readLine()))-1];
</code></pre>

<p>But I feel it's a bad practice to declare on * </p>

<ol>
<li>Is there a best practice (enum extension is one ... ) ?</li>
<li>Is there TryParse available or every time I parse I should try and catch  ?</li>
</ol>

<p>thank you </p>

<p><strong>EDIT</strong></p>

<p>does doing this is understandable and readable ?</p>

<pre><code>  public enum MainMenuOptiones{

    ADMIN {public void secondLayerMenu(){
      Main.AdminSecondLayerMenu();}},

    CUSTOMER{public void secondLayerMenu(){
       Main.customerSecondLayerMenu();}},

    EXIT{public void secondLayerMenu(){
        System.exit(1);}},

    UNAPPLICABLE{public void secondLayerMenu(){
        Screen.printToScreen("chice doesnt exist  try again");}};

    abstract public void secondLayerMenu();
}
</code></pre>

<p>the phrphes is instead of using all the switch mechanism
 I can use </p>

<pre><code> enumInstance.secondLayerMenu();
</code></pre>
