1、概述

public interface Appendable
能够被添加 char 序列和值的对象。如果某个类的实例打算接收取自 Formatter 的格式化输出,那么该类必须实现 Appendable 接口。
要添加的字符应该是有效的 Unicode 字符,正如 Unicode Character Representation 中描述的那样。注意,增补字符可能由多个 16 位 char 值组成。
Appendable 对于多线程访问而言没必要是安全的。线程安全由扩展和实现此接口的类负责。
由于此接口可能由具有不同的错误处理风格的现有类实现,所以无法保证错误不会传播给调用者

2、已知实现的子类

 BufferedWriter,
CharArrayWriter,
CharBuffer,
FileWriter,
FilterWriter,
LogStream,
OutputStreamWriter,
PipedWriter,
PrintStream,
PrintWriter,
StringBuffer,
StringBuilder,
StringWriter,
Writer

3、源码

 public interface Appendable{
/**
* 向此Appendable添加指定的字符序列。
* 有时可能不会全部添加真个序列,这取决于使用哪个类来实现字符序列 csq。
* 例如:如果csq是java.nio.CharBuffer的实例,则通过缓冲区的位置和限制来定义要添加的子序列。
* @param csq
* 要添加的字符串序列。如果 csq 为 null,则向该 Appendable 添加四个字符 "null"。
* @return 此Appendable的引用
* @throws IOException
* 如果发生I/O错误
*/
Appendable append(CharSequence csq) throws IOException;
/**
* 向此Appendable添加指定的字符序列的子序列。
* 当csq不为null的时候,调用 out.append(csq, start, end) 方法
* 和调用 out.append(csq.subSequence(start, end))方法完全相同
*
* @param csq
* 子序列将被添加的字符序列。如果 csq 为 null,则添加四个字符 "null",就好像 csq 包含这些字符一样。
* @param start
* 子序列中第一个字符索引
* @param end
* 在子序列中最后一个字符后面的字符的索引。
* @return 此Appendable的引用
* @throws IndexOutOfBoundsException
* 如果 start 或 end 为负,以及 start 大于 end 或者 end 大于 csq.length()
* @throws IOException
* 如果发生I/O错误
*/
Appendable append(CharSequence csq, int start, int end) throws IOException;
//向此 Appendable 添加指定字符。
Appendable append(char c) throws IOException; }

4、例子1

5、例子2

【jdk源码分析】java.lang.Appendable的更多相关文章

  1. jdk源码分析——java.lang.Boolean

      1.Boolean类里面的2个静态变量. Boolean类,直接声明了2个静态变量,TRUE 和 FALSE,指向2个对象.     public static final Boolean TRU ...

  2. 从源码分析java.lang.String.isEmpty()

    今天在写代码的时候用到了java.lang.String.isEmpty()的这个方法,之前也用过,今天突发奇想,就看了看源码,了解了解它的实现方法,总结出来,大家可以交流交流. 通常情况下,我们使用 ...

  3. JDK源码分析—— ArrayBlockingQueue 和 LinkedBlockingQueue

    JDK源码分析—— ArrayBlockingQueue 和 LinkedBlockingQueue 目的:本文通过分析JDK源码来对比ArrayBlockingQueue 和LinkedBlocki ...

  4. JDK 源码分析(4)—— HashMap/LinkedHashMap/Hashtable

    JDK 源码分析(4)-- HashMap/LinkedHashMap/Hashtable HashMap HashMap采用的是哈希算法+链表冲突解决,table的大小永远为2次幂,因为在初始化的时 ...

  5. JDK源码分析(2)LinkedList

    JDK版本 LinkedList简介 LinkedList 是一个继承于AbstractSequentialList的双向链表.它也可以被当作堆栈.队列或双端队列进行操作. LinkedList 实现 ...

  6. 【JDK】JDK源码分析-HashMap(1)

    概述 HashMap 是 Java 开发中最常用的容器类之一,也是面试的常客.它其实就是前文「数据结构与算法笔记(二)」中「散列表」的实现,处理散列冲突用的是“链表法”,并且在 JDK 1.8 做了优 ...

  7. 【JDK】JDK源码分析-ArrayList

    概述 ArrayList 是 List 接口的一个实现类,也是 Java 中最常用的容器实现类之一,可以把它理解为「可变数组」. 我们知道,Java 中的数组初始化时需要指定长度,而且指定后不能改变. ...

  8. 【JDK】JDK源码分析-AbstractQueuedSynchronizer(1)

    概述 前文「JDK源码分析-Lock&Condition」简要分析了 Lock 接口,它在 JDK 中的实现类主要是 ReentrantLock (可译为“重入锁”).ReentrantLoc ...

  9. 【JDK】JDK源码分析-ReentrantLock

    概述 在 JDK 1.5 以前,锁的实现只能用 synchronized 关键字:1.5 开始提供了 ReentrantLock,它是 API 层面的锁.先看下 ReentrantLock 的类签名以 ...

  10. 【JDK】JDK源码分析-HashMap(2)

    前文「JDK源码分析-HashMap(1)」分析了 HashMap 的内部结构和主要方法的实现原理.但是,面试中通常还会问到很多其他的问题,本文简要分析下常见的一些问题. 这里再贴一下 HashMap ...

随机推荐

  1. js_常见特效——点击切换_背景颜色_收起与展开

    <script src="../js/jquery-1.8.3.min.js"></script><script type="text/ja ...

  2. 创建list方法总结

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/sheismylife/article/details/28878593 构建一个list 注意要标记 ...

  3. HPC高性能计算知识: 异构并行计算

    版权声明:很多其它内容,请关注[架构师技术联盟]公众号 https://blog.csdn.net/BtB5e6Nsu1g511Eg5XEg/article/details/80059122 当摩尔定 ...

  4. 逻辑运算,&,&&, |, ||, ^, !

    &:与  特点:判断时两边为true才为true,只要两边有一个为false则结果为false:true&true=true: false&true=false: true&a ...

  5. [LeetCode] 121. Best Time to Buy and Sell Stock_Easy tag: Dynamic Programming

    Say you have an array for which the ith element is the price of a given stock on day i. If you were ...

  6. 共用tableview一个继承类里面有

    里面的复用cell会不会混在一起呢?

  7. <<Joint Deep Modeling of Users and Items Using Reviews for Recommendation>> 评论打分预测

    综述: 本文将 CNN 与 FM(Factorization Machine) 结合,基于评论文本来进行评分预测. 简介: 目前将神经网络应用推荐系统的研究工作中,有一类思路是把如CNN等神经网络作为 ...

  8. VS2010/MFC编程入门之三十七(工具栏:工具栏的创建、停靠与使用)

    鸡啄米在上一节教程中讲了工具栏资源及CToolBar类,本节继续讲解工具栏的相关知识,主要内容包括工具栏的创建.停靠与使用. 工具栏的使用 上一节中鸡啄米提到过,一般情况下工具栏中的按钮在菜单栏中都有 ...

  9. MyBatis学习笔记(六)——调用存储过程

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4270352.html 一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据 ...

  10. 测试开发-web测试要点

    参数输入考虑 参数数值包含1个.多个.很多个.null.参数值前后包含空格的2种情况   数字类型:正数.负数.0.0.0.+0.0.-0.0.指数.对数.分数.小数.复数.科学计数法的测试,全角的数 ...