我需要从ArrayList扩展类MyTime并添加方法。
另外我需要Date的实例,它的方法如MyTime中的after
。但编译说:
error: cannot find symbol method after(Date)
where Date is a type-variable:
Date extends Object declared in class TimeList
这是我的班级:
public class TimeList<Date> extends ArrayList<Date> {
private Integer current_index;
public Date getNextTime(){
Date time = new Date();
for (Date temp_time :this){
if (time.after(temp_time)){
return temp_time;
}
}
return time;
}
}
我应该如何声明Date实例或MyTime类?
答案 0 :(得分:4)
由于您的类不是通用的,因此其声明不应具有泛型类型参数;只有ArrayList
应该拥有它:
public class TimeList extends ArrayList<Date> ...
// ^
// No <Date> in the declaration
您无需担心班级名称中遗漏Date
,因为该名称已具有足够的描述性,以便人类读者了解您的班级代表了时间点的集合。
但是,您应该重新考虑您的方法:您的课程应该包含列表,而不是扩展ArrayList<Date>
。
public class TimeList {
private final List<Date> dates = new ArrayList<>();
public List<Date> getDates() {
return Collections.unmodifiableList(dates);
}
... // your additional methods
}
或者如果您需要在List<Date>
上提供其他方法,则可以编写实用程序类:
public final class TimeLists {
public static Date getNextTime(List<Date> dates) {
... //
}
public static Date getPriorTime(List<Date> dates) {
... //
}
...
private TimeLists() {
// Prevent instantiation of TimeLists class
}
}