我正在努力做到这一点.我有一个enum工作日.我enum平日使用的是不变的
public enum WeekDay {
MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY;
}
Run Code Online (Sandbox Code Playgroud)
我有一节课,叫做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 **/
}
Run Code Online (Sandbox Code Playgroud)
还有第三类,叫做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**/
}
Run Code Online (Sandbox Code Playgroud)
我需要做的是 - 在枚举中创建会话列表,即每天都有会话,然后我需要在场地内的结构(ArrayList或enumset?)中保存枚举,即场地有会话周一至周五(理想的是学校班级).所以它会是这样的:
public enum WeekDay {
MONDAY,TUESDAY,WEDNESDAY,THURSDAY,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();
...
}
Run Code Online (Sandbox Code Playgroud)
所以在场地,我们可以:
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();
...
}
Run Code Online (Sandbox Code Playgroud)
以下是我的问题:
Session班级嵌入enum吗?enum接受arraylists吗?有人告诉我,我将在同一天通过所有场地,无论星期一是星期一,所有场地,其列表将由每个场地更新.所以即使没有人发表评论,我认为这是讨论的结束.
如果您向工作日枚举添加了太多内容,则应该考虑一个超类或接口Weekday,并在自己的类中实现每个工作日。
如果您确实想在枚举中执行此操作,可以通过以下方式执行此操作:
1)实现方法,在每个方法(和构造函数)中进行切换,例如:
switch (this) {
case MONDAY:
return ...
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
2)使方法抽象,为每个工作日添加一个匿名实现:
public enum weekday {
MONDAY {
@Override
public Object getSomething() {
// TODO Auto-generated method stub
return null;
}
};
public abstract Object getSomething();
}
Run Code Online (Sandbox Code Playgroud)
3)添加构造函数的参数:
public enum weekday {
MONDAY(new Object());
final private Object object;
private weekday(Object object) {
this.object = object;
}
}
Run Code Online (Sandbox Code Playgroud)
但正如我所说,尽量避免让枚举不仅仅是一个枚举。
| 归档时间: |
|
| 查看次数: |
969 次 |
| 最近记录: |