java – 我可以在枚举中嵌套类,并在枚举中创建arraylist吗?

前端之家收集整理的这篇文章主要介绍了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类嵌入枚举中吗?
> enum可以接受arraylists吗?
>在会场内举办会议的最佳结构是什么?
>对此更好的想法?

有人告诉我,我将在同一天通过所有场地,例如星期一是所有场地的星期一,每个场地都会更新其名单.所以即使没有人发表评论,我认为这是讨论的结束.

解决方法

如果你在工作日枚举中添加太多,你应该考虑一个超类或界面工作日,并在他自己的班级中实现每个工作日.

如果你真的想在你的枚举中做到这一点,你可以用这种方式做到:

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;
    }
}

但正如我所说,尽量避免使你的枚举更多枚举.

原文链接:https://www.f2er.com/java/444644.html

猜你在找的Java相关文章