java – 我可以在枚举中嵌套类,并在枚举中创建arraylist吗?
我正在努力做到这一点.我有一个星期的枚举.我使用枚举,因为平日是不变的
public enum WeekDay { MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY; } 我有一个名为Session的课程.会话就是在特定时间发生的事情,例如数学课 public class Session { // some fields public String title; public int duration,start,end; /** several methods follow to get and set,and check e.t.c **/ } 有一个名为Venue的第三类.场地举办会议,例如数学课可以从上午9点到上午10点,在一个叫做“数学课”的场地(一个例子) public class Venue { // simply a place that can hold several sessions in a day private String name; private int capacity; /** several methods**/ } 我需要做的是 – 在枚举中创建会话列表,即每天都有会话,然后我需要在场地内的结构(ArrayList或enumset?)中保存枚举,即场地有会话周一至周五(理想的是学校班级).所以它会是这样的: public enum WeekDay { MONDAY,FRIDAY; /** the list of sessions for a given day**/ private ArrayList <Session> list; private int numOfSessions; // number of sessions /** with some methods like **/ addSession(); removeSession(); getSession(); checkTimeOfSession(); ... } 所以在场地,我们可以: public class Venue { private String name; private int capacity; private ? <WeekDay> list; //structure to hold days,i don't know which one to use yet /** several methods like **/ numOfSessionsOn(); getSessionsOn(); addSessionOn(); removeSessionOn(); ... } 以下是我的问题: >我可以将Session类嵌入枚举中吗? 有人告诉我,我将在同一天通过所有场地,例如星期一是所有场地的星期一,每个场地都会更新其名单.所以即使没有人发表评论,我认为这是讨论的结束. 解决方法
如果你在工作日枚举中添加太多,你应该考虑一个超类或界面工作日,并在他自己的班级中实现每个工作日.
如果你真的想在你的枚举中做到这一点,你可以用这种方式做到: 1)实现方法,在每个方法(和构造函数)中进行切换,如: switch (this) { case MONDAY: return ... break; default: break; } 2)使方法抽象,为每个工作日添加一个匿名实现: public enum weekday { MONDAY { @Override public Object getSomething() { // TODO Auto-generated method stub return null; } }; public abstract Object getSomething(); } 3)为构造函数添加参数: public enum weekday { MONDAY(new Object()); final private Object object; private weekday(Object object) { this.object = object; } } 但正如我所说,尽量避免使你的枚举更多枚举. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |