提防toString递归问题

看这个代码:

public class D
{
    @Override
    public String toString()
    {
        return "obj:"+this;
    }
    public static void main(String[] args)
    {
        System.out.println(new D());
    }
}

貌似很正常,但是这个代码是错误的,this会重复递归调用toString,最终抛出栈溢出异常:

Exception in thread "main" java.lang.StackOverflowError
    at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:113)
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:415)
...

应该返回super.toString().

提防toString递归问题,布布扣,bubuko.com

时间: 2024-11-05 12:28:42

提防toString递归问题的相关文章

递归遍历文件夹、取所有文件。包括子目录。

private int count = 0; private int TransformFiles(string path) { DirectoryInfo dir = new DirectoryInfo(path); DirectoryInfo[] dirs = dir.GetDirectories(); //获取子目录 FileInfo[] files = dir.GetFiles("*.*"); //获取文件名 List<string> list = new List

使用java搭建简单的ligerui环境

最近因为工作需要,学习了ligerui框架.但是,因为在公司,我们只是作为最低层的码农,所以环境都已经搭建好了,我们这些码农平时都是直接拿到工程,然后在别人的框架上不断的ctrl + c.ctrl + v,然后修修补补.所以为了摆脱这种困境,决定自己使用简单的servlet搭建一个ligerui,然后测试下ligerui这玩意到底是怎么跑起来的. 1.下载ligerui相关组件.这个很简单,直接去www.ligerui.com即可找到. 2.使用Eclipse创建一个web工程,然后搭建下面这个

关于文件夹的一些操作

import java.io.*; public class FileOperate { //创建指定目录 void makeDirectory(String dirName){ File file = new File(dirName);//实例化文件对象 try{ if(file.exists()){ System.out.println(dirName+"已存在"); } else{ file.mkdir(); System.out.println(dirName+"被

js调用wcf 的SOA

jquery 调用wcf 的SOA架构,将三层架构运用到SOA的架构中来 经过前面3天的学习,我想大家应该对SOA的架构有了初步的了解,其实 SOA与三层架构并不冲突,而是三层架构的升级版. 来看下传统的三层架构! 一共可以分为4个层: 模型层(可有可无),客户端,服务端,公共层. 我们在原有的三层架构的基础上,我们增加一个服务中转层! 然后客户端 通过 调用 服务中转,然后在调用  服务层,因为客户端可以有多个,可以是安卓,可以是IOS, 可以是电脑,可以是linux, 因为这个不管是什么样的

SSH+Easyui之TreeGrid树形展现数据

本文介绍Struts2.Spring.Hibernate与easyui的TreeGrid结合,以树的形式展现数据库中数据.在开发中会碰到很多需要以树的形式展现数据,如导航条.权限管理模块中的资源管理,通常在数据库中都是以树的形式存在.例子程序以资源管理为例,使用treegrid展现资源管理子模块的数据.最终效果如下图: 使用easyui使用树形展现很简单,只需将<table>标签的class设为easyui-treegrid即可 <body class="easyui-layo

IO流 2

File类   用来将文件或者文件夹封装成对象 方便对文件与文件夹的属性信息进行操作 . File对象可以作为参数传递给流的构造函数. 了解File类中的常用方法.   1.概述 //将a.txt封装成File对象 //可以将已有的和未出现的文件或者文件夹封装成对象. //文件路径 File f1 = new File("d:\\FileDemo\\a.txt"); //父目录,文件名 File f2 = new File("d:\\FileDemo\\abc",

java数据结构与算法之树基本概念及二叉树(BinaryTree)的设计与实现

[版权申明]未经博主同意,不允许转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53727333 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制) java数据结构与算法之栈(Stack)设

动手动脑-大数类

前面几讲介绍过JDK所提供的BigInteger能完成大数计算,如果不用它,直接使用数组表达大数,你能实现相同的功能吗? 要求: (1)用你的大数类实现加和减两个功能 (2)阅读BigInteger类源码,弄清楚它是使用什么算法实现加减乘除四种运算的? (3)通过互联网查找大数运算的相关资料,给你的大数类添加乘.除.求阶乘等其它功能. public class Factorial{ private static final int MAX = 1000000000; public static

MySQL树形查询结果封装成Json格式,返回给easyui treegrid

private String createTreeJson(List<SchedJob> list) {       JSONArray rootArray = new JSONArray();       for (int i=0; i<list.size(); i++) {        SchedJob resource = list.get(i);        System.out.println(resource.getJobid()+"--------"