2016-07-07 44 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; 
    } 
}