抽象日历返回 null
Abstract Calendar returning null
我正在尝试获取抽象日历以获取不同时间跨度的日期。我得到了抽象日历 class,我在其中定义了一个新的日历和两个方法。
public abstract class AbstractThreshold {
private Calendar cal;
public abstract Calendar getStartDate();
public abstract Calendar getEndDate();
public abstract void calculateThreshold();
protected void DateThreshold(final Date date) {
this.cal = Calendar.getInstance();
this.cal.setTime(date);
}
protected Calendar getInitial() {
return (Calendar) this.cal.clone();
}
}
然后class一个月的时间跨度
public class MonthThreshold extends AbstractThreshold{
@Override
public Calendar getStartDate() {
final Calendar cal = super.getInitial();
cal.set(Calendar.DAY_OF_MONTH,Calendar.getInstance().getActualMinimum(Calendar.DAY_OF_MONTH));
return (Calendar) cal;
}
@Override
public Calendar getEndDate() {
final Calendar cal = super.getInitial();
cal.set(Calendar.DAY_OF_MONTH,Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_MONTH));
return (Calendar) cal;
}
@Override
public void calculateThreshold() {
}
}
最后我在我的程序的主要 class 中调用了那些。
MonthThreshold mt = new MonthThreshold();
firstTime = unparsedDate.format(mt.getStartDate());
secondTime = unparsedDate.format(mt.getEndDate());
程序 returns 在点
的 MonthThreshold class 处为空
final Calendar cal = super.getInitial();
我是编程新手,抽象编程仍然对我打击很大...我做错了什么,我需要更改什么?
您正在 void DateThreshold() 方法中以及调用此 DateThreshold 的位置初始化日历。您正在调用 cal.getInitial() 来获取日历的克隆。显然日历没有在 getInitial() 中初始化。使用 DateTHreshod() 获取日历实例。
protected Calendar getInitial() {
this.cal = Calendar.getInstance();
this.cal.setTime(new Date());
return (Calendar) this.cal.clone();
}
这里我粘贴了避免NPE的代码。对我来说,它不给 NPE。但逻辑取决于你。
我正在尝试获取抽象日历以获取不同时间跨度的日期。我得到了抽象日历 class,我在其中定义了一个新的日历和两个方法。
public abstract class AbstractThreshold {
private Calendar cal;
public abstract Calendar getStartDate();
public abstract Calendar getEndDate();
public abstract void calculateThreshold();
protected void DateThreshold(final Date date) {
this.cal = Calendar.getInstance();
this.cal.setTime(date);
}
protected Calendar getInitial() {
return (Calendar) this.cal.clone();
}
}
然后class一个月的时间跨度
public class MonthThreshold extends AbstractThreshold{
@Override
public Calendar getStartDate() {
final Calendar cal = super.getInitial();
cal.set(Calendar.DAY_OF_MONTH,Calendar.getInstance().getActualMinimum(Calendar.DAY_OF_MONTH));
return (Calendar) cal;
}
@Override
public Calendar getEndDate() {
final Calendar cal = super.getInitial();
cal.set(Calendar.DAY_OF_MONTH,Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_MONTH));
return (Calendar) cal;
}
@Override
public void calculateThreshold() {
}
}
最后我在我的程序的主要 class 中调用了那些。
MonthThreshold mt = new MonthThreshold();
firstTime = unparsedDate.format(mt.getStartDate());
secondTime = unparsedDate.format(mt.getEndDate());
程序 returns 在点
的 MonthThreshold class 处为空final Calendar cal = super.getInitial();
我是编程新手,抽象编程仍然对我打击很大...我做错了什么,我需要更改什么?
您正在 void DateThreshold() 方法中以及调用此 DateThreshold 的位置初始化日历。您正在调用 cal.getInitial() 来获取日历的克隆。显然日历没有在 getInitial() 中初始化。使用 DateTHreshod() 获取日历实例。
protected Calendar getInitial() {
this.cal = Calendar.getInstance();
this.cal.setTime(new Date());
return (Calendar) this.cal.clone();
}
这里我粘贴了避免NPE的代码。对我来说,它不给 NPE。但逻辑取决于你。