码迷,mamicode.com
首页 > 其他好文 > 详细

自定义StringBuilder类拼接非空字符串

时间:2019-01-18 18:29:57      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:junit   int   测试   not   构造函数   style   exce   length   except   

主要目的: 为了拼接多个非空字符串,还能达到链式的装X效果
这里不考虑线程安全,所以使用StringBuilder快速拼接非空内容,中间用","作为分隔。

代码如下:
package com.baidu;
import org.apache.commons.lang.StringUtils;
import org.junit.Test;

public class MyStringBuilder {
private StringBuilder sb;
private Thread thread;
public MyStringBuilder() {
this.thread = Thread.currentThread ();
//判断放在放在构造函数中
if (sb == null) {
sb = new StringBuilder ();
}
}

public StringBuilder getSb() {
return sb;
}

public MyStringBuilder setSb(StringBuilder sb) {
this.sb = sb;
return this;
}

//item为空不拼接
public MyStringBuilder append(String item) {
if (this.thread != Thread.currentThread ()) {
throw new RuntimeException ("不能在多线程中使用");
}

if (StringUtils.isNotBlank (item)) {
if (sb.length () > 0) {
sb.append (",");
}
sb.append (item);
}
return this;
}

//不暴漏get方法,直接用类实例toString()
public String toString() {
//清空缓存并返回sb里的数据
String var1 = sb.toString ();
sb.delete (0, sb.length ());
return var1;
}

@Test
public void test() {
MyStringBuilder mySb = new MyStringBuilder ();
mySb.append ("aaa").append ("bbb").append ("ccc");
System.out.println ("mySb :" + mySb.toString ());

MyStringBuilder mySb2 = new MyStringBuilder ();
mySb2.append ("aaa2")
.append ("bbb2")
.append ("ccc2");
System.out.println ("mySb2 :" + mySb2.toString ());

//测试不能再多线程使用异常
new Thread (() -> {
mySb.append ("rr");
}).start ();
}
}



自定义StringBuilder类拼接非空字符串

标签:junit   int   测试   not   构造函数   style   exce   length   except   

原文地址:https://www.cnblogs.com/coloz/p/10288999.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!