public class NumberManager {
private int lastNumber;
//能用上级接口或父类做的事就不要用子类
private List<Integer> queueNumber=new ArrayList<>();
public synchronized Integer generateNewManager(){
queueNumber.add(lastNumber);
return lastNumber++;
}
public synchronized Integer fetchServiceNumber(){
//取走并返回号码队列中第一个号码
Integer number=null;
if(queueNumber.size()>0)
{number=queueNumber.remove(0);}
return number;
}
}
这是银行业务调度系统中的一个类,一开始是这样的
public class NumberManager {
private int lastNumber;
//能用上级接口或父类做的事就不要用子类
private List<Integer> queueNumber=new ArrayList<>();
public synchronized Integer generateNewManager(){
queueNumber.add(lastNumber);
return lastNumber++;
}
public synchronized int fetchServiceNumber(){
//取走并返回号码队列中第一个号码
return queue.remove(0);
}
}
}
张老师一开始说返回类型是int的话会当queue中无元素是会产生空指针异常,所以用Integer代替int,这里我有点不解,用Integer就不会产生空指针异常吗?然后就是改了Integer以后发生了数组下标越界异常,可是程序依旧NB地继续跑,这里的异常好像没有处理也没抛出,这异常不是会扔给JVM吗,那程序为啥没挂。希望看过视频的哥们来指点下
|