我正在努力做到这一点.我有一个星期的枚举.我使用枚举,因为平日是不变的
@H_404_2@public enum WeekDay {
MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY;
}
我有一个名为Session的课程.会话就是在特定时间发生的事情,例如数学课
@H_404_2@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点,在一个叫做“数学课”的场地(一个例子)
@H_404_2@public class Venue { // simply a place that can hold several sessions in a day private String name; private int capacity; /** several methods**/ }我需要做的是 – 在枚举中创建会话列表,即每天都有会话,然后我需要在场地内的结构(ArrayList或enumset?)中保存枚举,即场地有会话周一至周五(理想的是学校班级).所以它会是这样的:
@H_404_2@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(); ... }所以在场地,我们可以:
@H_404_2@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类嵌入枚举中吗?
> enum可以接受arraylists吗?
>在会场内举办会议的最佳结构是什么?
>对此更好的想法?
有人告诉我,我将在同一天通过所有场地,例如星期一是所有场地的星期一,每个场地都会更新其名单.所以即使没有人发表评论,我认为这是讨论的结束.
解决方法
如果你在工作日枚举中添加太多,你应该考虑一个超类或界面工作日,并在他自己的班级中实现每个工作日.
如果你真的想在你的枚举中做到这一点,你可以用这种方式做到:
@H_404_2@switch (this) { case MONDAY: return ... break; default: break; } @H_404_2@public enum weekday { MONDAY { @Override public Object getSomething() { // TODO Auto-generated method stub return null; } }; public abstract Object getSomething(); } @H_404_2@public enum weekday { MONDAY(new Object()); final private Object object; private weekday(Object object) { this.object = object; } }但正如我所说,尽量避免使你的枚举更多枚举.