zoukankan      html  css  js  c++  java
  • 如何在类中创建自身对象

    这个问题似乎很简单,下面的代码好像就可以

    package test;
    
    public class B {
    
        B b = new B();
    
        static {
            System.out.println("类初始化块");
        }
    
        {
            System.out.println("实例初始化块");
        }
    
        public B(){
            System.out.println("对象初始化");
        }
    
        public static void main(String[] args) {
            new B();
    
        }
    
    }

    当你运行之后,你会发现一下异常:

    类初始化块
    Exception in thread "main" java.lang.StackOverflowError
        at test.B.<init>(B.java:15)
        at test.B.<init>(B.java:5)
        at test.B.<init>(B.java:5)
        at test.B.<init>(B.java:5)
            ......

    很明显这是一个递归没有边界导致的异常,执行main方法new B()时B b= new B()执行,导致B b = new B()一直执行。

    如何解决这个问题呢?我想到了单例模式,不知道还有什么方法?

  • 相关阅读:
    四则运算02
    第三周学习进度条
    《构建之法》阅读笔记1
    第二周学习进度条
    四则运算01
    第八周进度条
    每日站立会日07,08
    每日站立会议06
    每日站立会议05
    每日站立会议04
  • 原文地址:https://www.cnblogs.com/fzqm/p/6821980.html
Copyright © 2011-2022 走看看