`
budairenqin
  • 浏览: 199325 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

阅读更多
	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处理方案,ToString基类

    每个项目我都必用的工具类,使用非常简单,放到项目目录中,java对象继承这个ToString类就可以,用在代码日志里特别方便,还支持过滤特定字段,满足日志保密性要求

    java简便方法引入getter/setter/tostring等方法

    java 的eclipse或idea等 定义变量时 直接引入lombok.jar包 在类外部 引入@AllArgsConstructor @NoArgsConstructor @Data 简便方法引入getter/setter/tostring等方法

    浅析JAVA中toString方法的作用

    以下是对在JAVA中toString方法的作用进行了详细的分析介绍,需要的朋友可以参考下

    java常用包。Date类,tostring方法视频

    java内常用包,date类,toString的使用方法

    为 java文件 书写 ToString方法

    1.自动为指定包下面的所有JAVA 文件书写toString方法代码。 2.自动为指定Class模板类书写toString方法代码。 3.使用该类前最好做备份,编码格式一定要提前设置。

    js中toString方法3个作用.docx

    js中toString方法3个作用.docx

    Java Object toString方法原理解析

    主要介绍了Java Object toString方法原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    实验03 Java面向对象编程1.doc

    1、学生类的创建和使用 ○1创建一个Student类,包括的域有学号,...然后再显示这个对象的全部信息(调用toString方法,或在println方法中直接输出使其自动调用toString方法)。 注:以上类中所有域都是private类型。

    Java中构造方法set/get和toString的使用详解

    主要介绍了Java中构造方法set/get和toString的使用详解,构造函数的最大作用就是创建对象时完成初始化,当我们在new一个对象并传入参数的时候,会自动调用构造函数并完成参数的初始化,需要的朋友可以参考下

    object中toString方法简介_动力节点Java学院整理.doc

    Object类在Java里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父类又是从另外一个父类继承过来,那他也只能有一个父类,父类再有父类,那也只能有一个,JAVA为了组织这个类组织得比较...

    java中的 toString()方法实例代码

    toString()方法 相信大家都用到过,一般用于以字符串的形式返回对象的相关数据。这篇文章主要介绍了java中的 toString()方法,需要的朋友可以参考下

    Java 中的 Boolean toString() 方法及其示例.docx

    Java 中的 Boolean toString() 方法及其示例

    bean运行时跟综实例-TOSTRING

    重写JAVA 程序 tostring()函数,以满足运行时跟综、排错,用log4j的trace级别输出,正常系统运行时不影响性能。 方便生产环境有问题时不停机排查。 主要用于VO或PO。

    浅谈Java编程ToString()方法重写的意义

    主要介绍了浅谈Java编程ToString()方法重写的意义,还是挺不错的,这里分享给大家,供朋友们学习和参考。

    Java 工具类 包含一些常用的方法

    JavaUtil类中其中包含的方法有: 1.获取指定长度的随机字符串 2.获得资源文件夹路径(类似项目中src目录,需传入包名) 3.为指定类添加toString方法代码 4.为指定包名下的所有java文件添加toString方法代码 5.将...

    Java基础[03-面向对象].

    面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 强调的是功能行为 面向对象 将功能封装进对象,强调具备了功能的对象。 面向对象是基于面向过程的。

    JAVA面向对象详细资料

    Java面向对象 1 1 学习方法与要求 1 2 面向对象语言与面向过程语言的区别 7 3 面向对象?什么对象? 8 4 什么是类? 9 5 如何创建一个类Class? 10 6 如何使用类创建对象 10 7 引用与实例 11 8 实例属性与实例方法 ...

    java中的tostring方法的具体用法

    主要介绍了java中的tostring方法的具体用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面我们来一起学习一下吧

    java toString ToStringBuilder ReflectionToStringBuilder

    收集整理了一些toString的实现方式,相信其中一定有你喜欢的,还等什么赶紧下载吧,评论后积分返回

    java复数四则运算-类的定义与对象.rar

    1. 编写一个类实现复数的运算。...toString():把当前复数对象的实部、虚部组合成a+bi的字符串形式,其中和分别为实部和虚部的数据。 2. 编写Java Application程序使用上题定义的类,检查类定义是否正确。

Global site tag (gtag.js) - Google Analytics