“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();
-
- }
使用时直接从对象池中调用即可,这样就不会出现堆栈溢出的错误啦!