zoukankan      html  css  js  c++  java
  • 类的相互依赖导致StackOverflowError

    public class SchoolServiceImpl {
    	private static SchoolServiceImpl instance = new SchoolServiceImpl();
    	private static ClassServiceImpl classServiceImpl = ClassServiceImpl.getInstanse();	
    	public static SchoolServiceImpl getInstanse() {
    		if (instance == null)
    			return instance = new SchoolServiceImpl();
    		return instance;
    	}
    
    	public int getSchoolCount() {		
    		return classServiceImpl.getClassesCount();
    	}
        
    	public static void main(String[] args) {
    		System.out.println(classServiceImpl.getClassesCount());
    	}
    }

    public class ClassServiceImpl {
    
    	/**
    	 * @param args
    	 */	
    	private static ClassServiceImpl instance = new ClassServiceImpl();
    	public static  ClassServiceImpl getInstanse() {
    	if (instance == null)
    			return instance = new ClassServiceImpl();
    		return instance;
    	}
    	private static SchoolServiceImpl schoolServiceImpl=SchoolServiceImpl.getInstanse();
    	
    	public int getClassesCount()
    	{   
    		System.out.println(classServiceImpl.toString());
    		return schoolServiceImpl.getSchoolCount();
    	}
    }

    如上两个类彼此依赖当中的方法。导致死循环,终于导致内存溢出。

    从中得到的教训:尽可能降低类的彼此依赖,做到单向依赖。

  • 相关阅读:
    python_24_test
    python_23_tuple
    python_22_enumerate
    python_20_列表
    python_21_copy
    python_19_编码解码
    python_18_三元运算
    python_16_自己建立模块
    关于主键(PRIMARY KEY)和自增(AUTO_INCREMENT)结合使用的知识点
    MySQL root用户忘记密码怎么办?修改密码方法:skip-grant-tables
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6814120.html
Copyright © 2011-2022 走看看