构造函数类中的Java NullPointerException
我创建了一个Java类,在这个类中我定义了一个构造函数和一些方法,但我得到了一个NullPointer异常,我不知道如何修复它
public class Job {
String idJob;
int time;
int timeRun;
Job j1;
List<Job> startBeforeStart;
List<Job> restricted;
Job(String idJob, int time){
this.idJob=idJob;
this.time=time;
}
public boolean isRestricted() {
return restricted.size() != 0;
}
public void startsBeforeStartOf(Job job){
startBeforeStart.add(job);
job.restricted.add(this);
}
public void startsAfterStartOf(Job job){
job.startsBeforeStartOf(this);
}
public void checkRestrictions(){
if (!isRestricted()){
System.out.println("+\n");
}
else{
Iterator<Job> itR = restricted.iterator();
while(itR.hasNext()){
Job j1 = itR.next();
if(time>timeRun){
System.out.println("-\n");
time--;
}
else {
restricted.remove(j1);
}
}
}
}
@Override
public boolean equals(Object obj) {
return obj instanceof Job && ((Job) obj).idJob.equals(idJob);
}
public void run() {
timeRun++;
}
}
PS 在一个论坛中,一位用户说,为了修复错误,我应该在构造函数中创建一个ArrayList(不修改接收到的参数,这些参数应该保持String id和int time),但我不明白他的意思
# 1 楼答案
您没有为列表
startBeforeStart
和restricted
创建List<Job>
指令-您只声明了一个变量,该变量被赋值为空指针因此,每当你试图访问这个
List
[例如:return restricted.size() != 0;
]时,你都在试图去引用一个空指针——这会导致你的NPE应该使用
new
操作符(可能在构造函数中)创建List
的实例看看^{} 和^{} ,然后选择哪个更适合你
例如,如果您使用
ArrayList
来表示这两种情况,那么您的任务应该是: