14

内部クラスに関係する非常に具体的な問題があります。サンプルコードをいくつかお見せしましょう:

class Foo {
    MYOPTIONS temp;

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

したがって、この列挙は Foo クラス内にあります。ここでやりたいことは、一時変数を 3 つのオプションの 1 つとして設定することですが、これはクラス Foo の外で行います。たとえば、External というクラスからとします。残念ながらExternal.setTemp (MYOPTIONS.OPTION1)、列挙型は外部クラスで表示されないため、有効ではないため、それを行うための set メソッドを使用できません。したがって、私が思いついた唯一のことは、クラス Foo に 3 つのメソッドがあることです。

public void setTempOption1 () {this.temp=MYOPTIONS.OPTION1;}
public void setTempOption2 () {this.temp=MYOPTIONS.OPTION2;}
public void setTempOption3 () {this.temp=MYOPTIONS.OPTION3;}

明らかに、他のオプションは、列挙を変更し、それを内部クラスとして持たないようにすることです。私が見逃している他のオプションはありますか?ありがとう

4

5 に答える 5

2

宣言は有効ですが、次のように使用する必要があります。

Foo.MYOPTIONS var = Foo.MYOPTIONS.OPTION1

「列挙型」を使用している場合、クラスの名前がありません。

于 2012-04-28T10:24:38.067 に答える