Java 使用枚举将用户输入限制为特定值

Java 使用枚举将用户输入限制为特定值,java,enums,Java,Enums,当有人创建Movie对象时,他们只传入我定义的showingStatus列表,我如何以这种方式进行限制 我还想定义get和set方法,但它们会抛出注释中指出的错误 public class Movie { private String title, director; private float overallRating; private enum showingStatus {ComingSoon, Preview, NowShowing}; public

当有人创建
Movie
对象时,他们只传入我定义的
showingStatus
列表,我如何以这种方式进行限制

我还想定义get和set方法,但它们会抛出注释中指出的错误

public class Movie {
    private String title, director;
    private float overallRating;

    private enum showingStatus {ComingSoon, Preview, NowShowing};

    public Movie(String title, enum showingStatus, String director)
    {
        this.title = title;
        this.showingStatus = showingStatus;
        this.director = director;
        overallRating = 0;
    }
}

我想这可能就是你要找的

public void setShowingStatus(enum showingStatus){ this.showingStatus = showingStatus;} // showingStatus cannot be resolved or not a field
public String getShowingStatus() { return showingStatus; } // showingStatus cannot be resolved to a variable
编辑:

这是同样的事情。传入变量时不能声明
enum
类型。不管你做了什么。在本例中,我将其设置为ShowingStatus,因此您会说:

public class Movie {
    private String title, director;
    private float overallRating;
    private ShowingStatus showingStatus;

    public enum ShowingStatus {ComingSoon, Preview, NowShowing}

    public Movie(String title, ShowingStatus showingStatus, String director)
    {
        this.title = title;
        this.showingStatus = showingStatus;
        this.director = director;
        overallRating = 0;
    }
}
要允许其他类使用ShowingStatus枚举,请通过执行以下操作创建单独的枚举文件:

public void setShowingStatus(ShowingStatus showingStatus){ this.showingStatus = showingStatus;} // showingStatus cannot be resolved or not a field
public ShowingStatus getShowingStatus() { return showingStatus; } // showingStatus cannot be resolved to a variable

现在,其他类应该能够调用ShowingStatus.ComingSoon或ShowingStatus中的任何其他枚举元素。

您已经在这样做了!陛下它在我的构造函数定义上抛出了很多错误。错误是什么?
此行有多个标记
-
标记上的语法错误“,”,无效的BlockStatements
-
只能在顶级类或接口内或在静态上下文中定义成员enum showingStatus。
-
类型showingStatus正在隐藏类型Movie。showingStatus
-
标记“enum”上的语法错误,应为类型。
-
标记“enum”上的语法错误,应为bype。
是,谢谢,这就是我要找的。另一个问题是如何创建
电影
对象?正在制作电影myMovie=新电影(“myTitle”、“ComingSoon”、“myDirector”)不起作用
电影myMovie=新电影(“myTitle”,ShowingStatus.ComingSoon,“myDirector”)悉达多说的正是。请记住,
Enum
不等于
String
。是的,我对使用Enum是新手。现在我明白了。但是,当我尝试在另一个类中创建
Movie
对象时,出现了一个错误。似乎无法导入枚举<代码>导入静态电影.ShowingStatus产生错误
无法解析导入电影
如何定义枚举,以便同一包(默认包)中的所有类都可以访问它?您始终可以在
电影
之外创建
ShowingStatus
,以便其他类可以使用它。就像其他类可以自由调用的单独文件一样。
public enum ShowingStatus {
    ComingSoon, Preview, NowShowing
}