出现了堆栈溢出错误
“Exception in thread "main" java.lang.StackOverflowError”
出现原因:
在创建对象时出现循环依赖,在IndexView中创建对象:
JobView jv = new JobView; IndexView iv = new IndexView;
在JobView中创建对象:
private JobService js = new JobService;
在JobService中创建对象:
IndexView iv= new IndexView;
形成了一个完整的闭环,不停地循环,超出了堆栈空间,造成了溢出。
解决方法:
创建了一个对象池模式(Object Pool Pattern),是创建型设计模式的一种,将对象预先创建并初始化后放入对象池中,对象提供者就能利用已有的对象来处理请求,减少频繁创建对象所占用的内存空间和初始化时间。
package Project.campusparttimejob3;
import Project.campusparttimejob3.service.JobService;
import Project.campusparttimejob3.service.UserService;
import Project.campusparttimejob3.view.IndexView;
import Project.campusparttimejob3.view.JobView;
import Project.campusparttimejob3.view.LoginView;
import Project.campusparttimejob3.view.NameView;
import Project.team.service.LoginService;
public class ObjectPool {
/**** 视图对象 **/
public static IndexView INDEX_VIEW = new IndexView();
public static JobView JOB_VIEW = new JobView();
public static LoginView LOGIN_VIEW = new LoginView();
public static NameView NAME_VIEW = new NameView();
/** 服务对象 */
public static JobService JOB_SERVICE = new JobService();
public static LoginService LOGIN_SERVICE = new LoginService();
public static UserService USER_SERVICE = new UserService();
}
使用时直接从对象池中调用即可,这样就不会出现堆栈溢出的错误啦!