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;
}
}
但正如我所说,尽量避免使你的枚举更多枚举. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
