using inner classes in Java - enum

enums, inner-classes, java

Solution

class ContainsInnerEnum {
    MYOPTIONS temp;

    public enum MYOPTIONS {
        OPTION1, OPTION2, OPTION3;
    } 
}

class EnumTester {
    public void test () {
        ContainsInnerEnum ie = new ContainsInnerEnum ();
        // fail:
        // ie.temp = MYOPTIONS.OPTION1;
        // works:
        ie.temp = ContainsInnerEnum.MYOPTIONS.OPTION1;
    }       
}

The whole name of the MYOPTIONS contains the embedding class name.

Problem

I have a very specific issue that has to do with an inner class. Let me show you some sample code: ``` class Foo { MYOPTIONS temp; public static enum MYOPTIONS { OPTION1, OPTION2, OPTION3; } } ``` So this enumeration is inside the class Foo. Now what I want to do is set the temp variable as one of the three options, but do that outside the class Foo, let's say from a class called External. Unfortunately I cannot have a set method to do that because `External.setTemp (MYOPTIONS.OPTION1)` is not valid, as the enum is not visible in class external. So the only thing I could come up with is have three methods in class Foo: ``` public void setTempOption1 () {this.temp=MYOPTIONS.OPTION1;} public void setTempOption2 () {this.temp=MYOPTIONS.OPTION2;} public void setTempOption3 () {this.temp=MYOPTIONS.OPTION3;} ``` Obviously the other option is to change the enumeration and not have it as an inner class. Are there any other options that I am missing? Thanks

Original source

Related problems