看看StringRead的内部

先来看看这个类都和哪些类和接口有关系,看到StringReader主要是继承了抽象类Reader,我们知道Writer和Reader类是设计来处理基于字符串的输入和输出的,如下图

f10a0ddb6577789e58ef53ce41458ac7b53.jpg

该类有4个变量属性,一个字符串和其相应的特性长度,next,mark。

1329c452f4debc7377147728d46f305e9f5.jpg

该方法就一个构造函数,干了什么,一眼也明白了

e472ca60cf144fe73a64345839e31d71db6.jpg

这个方法就用来判断str字符串是否为空

d5556c07aea1b2f3b9e6b4ea39960ef462f.jpg

然后再看看read方法,这里加了一个锁,lock其实在Reader里面就是当前对象本身,然后next会递增,

fa2866a6f7c40a1b275686262378b3ba1e8.jpg

然后看看skip方法,这里会先判断如果next已经不小于length,就返回0,这里还会ns和字符串可移动长度比较,只是后面的是考虑负数的情况,退回的长度不能超过next,然后返回实际移动的距离。

204e858765d263284557cc685c0c840733f.jpg

ready方法就是看str数据是否已经不为空

5c64e0e86aacba3b4e31aa8b7cd7d24d775.jpg

还有close方法也很好理解,到这想想那些方法里的 ensureOpen还是有用的,毕竟并发清情况下执行了,没有这个方法就会错乱啦。

58836b3567d662968f8297219f2712ed82a.jpg

然后写一个demo

a068d8cdeb1b2fd451112767bfee67d0563.jpg

 

转载于:https://my.oschina.net/u/2277632/blog/3038881

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值