2017-01-09 6 views
1

列挙型を仮引数として取るコンストラクタを使用してクラスを定義したい(enum型に適合する引数だけが渡される)。ここで私は(私は大学の仕事をやってるとplagiariseしたくないとして一般化)したものです:私はJavaで列挙型を使用してコンストラクタを作成する

EnumThing doodah = new EnumThing(CONSTANT1); 

をしようとすると、

public class EnumThing 
{ 
private SomeConstant aConstant; 
private enum SomeConstant {CONSTANT1, CONSTANT2, CONSTANT3}; 

public EnumThing(SomeConstant thisConstant) 
{ 
    this.aConstant = thisConstant; 
} 

// Methods 

は、しかし、私はエラーを取得する:シンボルを見つけることができません - 変数CONSTANT1

これは、何にもenumを使用する私の最初の試みです。彼らはエキサイティングな強力なようだが、私はそれらを間違って使用しているようだ。どんな助けも大変に感謝しています!

答えて

2

全作業例(正しい使い方があることに注意してください:SomeConstant.CONSTANT1):あなたはprivate列挙型を使用することができます

public class EnumThing { 
    private SomeConstant aConstant; 

    private enum SomeConstant {CONSTANT1, CONSTANT2, CONSTANT3} 

    public EnumThing(SomeConstant thisConstant) { 
     this.aConstant = thisConstant; 
    } 

    public static void main(String[] args) { 
     EnumThing doodah = new EnumThing(SomeConstant.CONSTANT1); 
    } 
} 

注意。しかし、あなたのクラス(EnumThing)内でのみアクセス可能です。

+0

I OPのコードの問題が何であるかを記述し、単に「完全な動作例」を提供するのではなく、解説とともに解決策を提供することが、通常より有用であると考えてください。 – Egor

+0

私は両方をしました。 – Idos

+0

ありがとうございます - 私はIDEを使用して、メインのメソッドを閉塞するワークスペースを持っています(実際にはそうではありませんが、少し進んだと思います)。あなたはこれが書かれたものとして働いていると言っているのですか、それともより良いフォーマットをしていますか? –

4

まず第一に、あなたは列挙型publicを確認する必要がありそうでない場合は、クラスEnumThingの外にアクセスすることはできません。

public class EnumThing { 
    public enum SomeConstant {CONSTANT1, CONSTANT2, CONSTANT3} 

    // ... 
} 

その後、正しく列挙型のメンバーにアクセス:

EnumThing doodah = new EnumThing(EnumThing.SomeConstant.CONSTANT1); 
+0

ありがとうございます!これはそれを修正しました! –

関連する問題