Java将类定义为枚举值,而不是其他类型
我是Java中使用Java将类定义为枚举值,而不是其他类型,java,Java,我是Java中使用enums的新手,我想用它来代替其他类型,如String或int。在下面的代码中,我希望有一些值作为枚举,从类构造函数中设置它,然后通过getter获得它,我的代码是不正确的,在更多的谷歌搜索之后,我似乎无法修复它 谢谢你 public class SampleEvent { private enum path { LEFT , RIGHT } public SampleEvent(path p) { p
enum
s的新手,我想用它来代替其他类型,如String
或int
。在下面的代码中,我希望有一些值作为枚举
,从类构造函数
中设置它,然后通过getter
获得它,我的代码是不正确的,在更多的谷歌搜索之后,我似乎无法修复它
谢谢你
public class SampleEvent {
private enum path {
LEFT ,
RIGHT
}
public SampleEvent(path p) {
path = p;
}
public enum getPath(){
return path;
}
}
您的代码应该如下所示
public class SampleEvent {
public enum PATH {
LEFT ,
RIGHT
}
private PATH val;
public SampleEvent(PATH p) {
val = p;
}
public PATH getPath(){
return val;
}
public static void main(String[] args) {
SampleEvent se = new SampleEvent(PATH.LEFT);
System.out.println(se.getPath());
}
}
并且输出为左
您必须创建枚举类型的成员变量,并且您的getPath
方法应该具有正确的返回类型
您还必须使枚举公开
,否则将无法从类外部调用构造函数(类外部的代码将无法访问枚举类型)
试试这个
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;
}
}
如果SampleEvent可以是不可变的,那么最好是这样:private final path val代码>我还将路径枚举名设置为“path”以遵循命名约定。并且该枚举应该是公共的。@Fildor感谢您的帮助inputs@Jesper你会主张路径域是最终的吗?当然,如果SampleEvent是不可变的话,那么就是这样。@Fildor是的,但我不想在我的答案中加入太多信息。使类不可变通常是一个好主意。
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;
}
}