2017-01-09 97 views
1

我想用一個將枚舉作爲形式參數的構造函數來定義一個類(因此只能傳遞符合枚舉類型的參數)。以下是我已經(概括爲我做大學的工作,不想抄襲):在Java中使用枚舉創建構造函數

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

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

// Methods 

然而,當我嘗試

EnumThing doodah = new EnumThing(CONSTANT1); 

我得到一個錯誤:無法找到符號 - 變量CONSTANT1

這是我第一次嘗試使用枚舉來完成任何事情。他們看起來非常強大,但似乎我錯誤地使用了它們。任何幫助非常感謝!

回答

2

全部工作示例(請注意,正確的用法是:SomeConstant.CONSTANT1):

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); 
    } 
} 

請注意,您可以使用一個private枚舉。但它只能在您的班級內訪問(EnumThing)。

+0

我認爲描述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

謝謝!這固定它! –