abstract class Library {
private String day;
public String getDay()
{
return day;
}
public void setDay(String oo){
day = oo;
}
public abstract String setDate();
}
class Books extends Library {
public String setDate() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d-MMM-yyyy");
String dat = this.getDay();
LocalDate localDate = LocalDate.parse(dat, formatter);
LocalDate when = localDate.plusDays(7);
String waitString = when.format(formatter);
return waitString;
}
}
class Main {
public static void main(String[] args) {
for (int i=0; i<10; i++){
System.out.println(rent[i].getDay() + rent[i].setDate());
}
}
Java在线程 "main "中给了我一个来自java.lang.NullPointerException的异常。String dat = this.getDay();
但当我把它改为像 String dat = 23-Mar-2019
它工作得很好。似乎java没有响应扩展类的 "this.getDay()",但我不知道如何解决这个问题。
在Java中,实例和类变量都是用你的默认值初始化的。对于对象,默认值是 null
. 然后,如果你改变 private String day;
到 private String day = LocalDate.now();
你将不会收到一个nullPointerException。
或者你可以将你的方法改为
public String getDay()
{
if(day == null) return LocalDate.of(2020, 01, 01).toString();
else return day;
}