【发布时间】:2013-11-07 21:29:00
【问题描述】:
我有一个带有 TreeMap 字段和构造函数的类 Timeline:
public class Timeline{
private TreeMap<DateTime, Schedulable> schedule;
public Timeline(TreeMap<DateTime, Schedulable> schedule) {
this.schedule = schedule;
}
}
我有一个 Activity 类,它有一个 Timeline 作为字段:
public class Activity extends Schedulable implements Serializable {
private Timeline legalTimes;
public Activity() {
legalTimes = new Timeline(new TreeMap<DateTime, LegalTime>());
//error here for can't find constructor ^^^^^
}
LegalTime 扩展 Schedulable 的地方。
要求:
- 时间轴应允许其他人在其时间轴上安排任何 Schedulable 子类(不需要在 TreeMap 中保持一致)
- Activity 的字段 legalTimes 应该只在其时间线上有 LegalTime
我认为这段代码应该可以工作,因为 LegalTime 是 Schedulable 的子类。我也无法添加第二个采用 TreeMap 的构造函数,因为它具有相同的擦除。
我该如何解决这个问题?
【问题讨论】:
-
离题:作为最佳实践,请考虑在 Timeline 构造函数中制作 TreeMap
计划的防御性副本,并将副本分配给计划实例变量。
标签: java generics inheritance constructor