先来看看这个类都和哪些类和接口有关系,看到StringReader主要是继承了抽象类Reader,我们知道Writer和Reader类是设计来处理基于字符串的输入和输出的,如下图
该类有4个变量属性,一个字符串和其相应的特性长度,next,mark。
该方法就一个构造函数,干了什么,一眼也明白了
这个方法就用来判断str字符串是否为空
然后再看看read方法,这里加了一个锁,lock其实在Reader里面就是当前对象本身,然后next会递增,
然后看看skip方法,这里会先判断如果next已经不小于length,就返回0,这里还会ns和字符串可移动长度比较,只是后面的是考虑负数的情况,退回的长度不能超过next,然后返回实际移动的距离。
ready方法就是看str数据是否已经不为空
还有close方法也很好理解,到这想想那些方法里的 ensureOpen还是有用的,毕竟并发清情况下执行了,没有这个方法就会错乱啦。
然后写一个demo