栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java - 两个类互相组合嵌套引用会爆炸吗?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java - 两个类互相组合嵌套引用会爆炸吗?

Demo3.java 
package tech.luxsun.interview.luxinterviewstarter.demo;

import java.time.LocalDateTime;

public class Demo3 {
    private String sex;
    private String name;
    private Demo2 demo2;

    public Demo3(String sex, String name) {
        this.sex = sex;
        this.name = name;
    }

    public Demo3() {
    }

    public Demo2 getDemo2() {
        return demo2;
    }

    public void setDemo2(Demo2 demo2) {
        this.demo2 = demo2;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Demo3{" +
                "sex='" + sex + ''' +
                ", name='" + name + ''' +
                ", demo2=" + demo2 +
                '}';
    }
}

Demo2.java
package tech.luxsun.interview.luxinterviewstarter.demo;

public class Demo2 {
    private String sex;
    private String name;
    private Demo3 demo3;

    public Demo2() {
    }

    public Demo3 getDemo3() {
        return demo3;
    }

    public void setDemo3(Demo3 demo3) {
        this.demo3 = demo3;
    }

    public Demo2(String sex, String name) {
        this.sex = sex;
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public static void main(String[] args) {
        Demo2 demo2 = new Demo2();
        demo2.setName("Bob");
        demo2.setSex("男");

        Demo3 demo3 = new Demo3();
        demo3.setName("Alice");
        demo3.setSex("女");

        demo2.setDemo3(demo3);
        demo3.setDemo2(demo2);

        System.out.println(demo2.toString());
        System.out.println(demo3.getDemo2());
    }

    @Override
    public String toString() {
        return "Demo2{" +
                "sex='" + sex + ''' +
                ", name='" + name + ''' +
                ", demo3=" + demo3 +
                '}';
    }
}

  • 目前 2 个 Demo 都重写了 toString,输出结果
Exception in thread "main" java.lang.StackOverflowError
	at java.lang.StringBuilder.append(StringBuilder.java:136)
	at tech.luxsun.interview.luxinterviewstarter.demo.Demo2.toString(Demo2.java:58)
	at java.lang.String.valueOf(String.java:2994)
	at java.lang.StringBuilder.append(StringBuilder.java:131)
	at tech.luxsun.interview.luxinterviewstarter.demo.Demo3.toString(Demo3.java:44)
	at java.lang.String.valueOf(String.java:2994)
	at java.lang.StringBuilder.append(StringBuilder.java:131)
    ……

  • 注释掉其中 1 个 Demo toString,输出结果
Demo2{sex='男', name='Bob', demo3=tech.luxsun.interview.luxinterviewstarter.demo.Demo3@19469ea2}
Demo2{sex='男', name='Bob', demo3=tech.luxsun.interview.luxinterviewstarter.demo.Demo3@19469ea2}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/337124.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号