当前位置:首页 > 开发 > 编程语言 > Java > 正文

java 在toString()方法中修改对象状态导致诡异的debug问题

发表于: 2013-06-03   作者:budairenqin   来源:转载   浏览次数:
摘要: protected char buffer[]; ...... @Override public String toString() { // Create a copy, don't share the array String value = new String(this.buffer, 0, count); if (this.buffer.le
	protected char buffer[];
	......     
	@Override
	public String toString() {
		// Create a copy, don't share the array
		String value = new String(this.buffer, 0, count);
		if (this.buffer.length <= 1024 * 8) {
			bufferLocal.set(new SoftReference<char[]>(this.buffer));
		}

		this.buffer = null;
		return value;
	}

这段代码正常执行没什么问题,(前提是调用了toString()后就结束对此对象的使用)但是如果用IDE debug的时候监视当前对象,IDE就会调用toString(),会执行this.buffer = null,当前对象状态就悄无声息的被修改了,我被它坑的调查了半个小时,不知道有没有人曾经跟我同样遭遇,看来还是最好不要在toString修改对象状态,还是增加一个如下方法吧
	public String toStringAndClose() {
		// Create a copy, don't share the array
		String value = new String(buffer, 0, count);
		if (buffer.length <= 1024 * 8) {
			bufferLocal.set(new SoftReference<char[]>(buffer));
		}
		buffer = null;
		return value;
	}

	@Override
	public String toString() {
		// Create a copy, don't share the array
		return new String(buffer, 0, count);
	}

java 在toString()方法中修改对象状态导致诡异的debug问题

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”。 它通
因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”。 它通
javascript中的toString()方法,主要用于Array、Boolean、Date、Error、Function、Number等对象。下
javascript中的toString()方法,主要用于Array、Boolean、Date、Error、Function、Number等对象。下
html5的属性draggable,有了它实现拖拽非常简单。 在chrome上很轻易的实现了拖拽的效果,可是到了fi
在debug中该变量 如果是int之类的,是可以直接改的。 如果是个对象呢。如日期类date:其实我们是可以
在包含main方法的类上右键Run as -> Java Application出现如下错误: java.lang.NoClassDefFound
说明: Hibernate是一个ORM框架。也就是底层数据表和项目中实体对应关系的一个操作框架。当使用Hibe
Hibernate持久化对象有三种状态:瞬时(transient)、持久(persistent)、托管(detached): 瞬时
Hibernate持久化对象有三种状态:瞬时(transient)、持久(persistent)、托管(detached): 瞬时
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号