2016-07-07 79 views
-2

我是使用Java中的enum s的新手,我想使用它來代替其他類型,例如Stringint。在下面的代碼中,我想有一些價值作爲enum,從類Constructor設置,然後通過getter得到,我的代碼是不正確的,經過更多的谷歌搜索後,我似乎無法修復它。Java將類定義爲枚舉值而不是其他類型

謝謝advace。

public class SampleEvent { 
    private enum path { 
     LEFT , 
     RIGHT 
    } 

    public SampleEvent(path p) { 
     path = p; 
    } 

    public enum getPath(){ 
     return path; 
    } 
} 

回答

1

你必須創建枚舉類型的成員變量,你的getPath方法應該有正確的返回類型。

您還必須創建枚舉public,否則將無法從類外部調用構造函數(類外部的代碼將無法訪問枚舉類型)。

public class SampleEvent { 
    public enum Path { 
     LEFT, RIGHT 
    } 

    // Member variable 
    private Path path; 

    // Constructor 
    public SampleEvent(Path p) { 
     path = p; 
    } 

    public Path getPath() { 
     return path; 
    } 
} 
+0

非常感謝您的先生 –

+0

@Jesper您是否會主張Path域是最終的?這就是說,如果SampleEvent本意是不可改變的。 – Fildor

+0

@Fildor是的,但我不想在我的回答中提供太多的信息。讓類不可變是個好主意。 – Jesper

4

您的代碼應該像下面..

​​

輸出爲LEFT

+1

如果SampleEvent可以是不可變的,它可能是最好使它這樣:'私人最終路徑VAL;'我也想使路徑枚舉名稱爲「路徑」跟隨命名約定。 – Fildor

+0

Enum應該公開。 – Fildor

+0

@Fildor感謝您的輸入 –

0

試試這個

public class SampleEvent { 

    public enum Path { 
     LEFT , 
     RIGHT 
    } 

    private Path path; 

    public SampleEvent(SampleEvent.Path path) { 
     this.path = path; 
    } 

    public SampleEvent.Path getPath() { 
     return path; 
    } 
}