【jdk源码分析】java.lang.Appendable
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的更多相关文章
- jdk源码分析——java.lang.Boolean
1.Boolean类里面的2个静态变量. Boolean类,直接声明了2个静态变量,TRUE 和 FALSE,指向2个对象. public static final Boolean TRU ...
- 从源码分析java.lang.String.isEmpty()
今天在写代码的时候用到了java.lang.String.isEmpty()的这个方法,之前也用过,今天突发奇想,就看了看源码,了解了解它的实现方法,总结出来,大家可以交流交流. 通常情况下,我们使用 ...
- JDK源码分析—— ArrayBlockingQueue 和 LinkedBlockingQueue
JDK源码分析—— ArrayBlockingQueue 和 LinkedBlockingQueue 目的:本文通过分析JDK源码来对比ArrayBlockingQueue 和LinkedBlocki ...
- JDK 源码分析(4)—— HashMap/LinkedHashMap/Hashtable
JDK 源码分析(4)-- HashMap/LinkedHashMap/Hashtable HashMap HashMap采用的是哈希算法+链表冲突解决,table的大小永远为2次幂,因为在初始化的时 ...
- JDK源码分析(2)LinkedList
JDK版本 LinkedList简介 LinkedList 是一个继承于AbstractSequentialList的双向链表.它也可以被当作堆栈.队列或双端队列进行操作. LinkedList 实现 ...
- 【JDK】JDK源码分析-HashMap(1)
概述 HashMap 是 Java 开发中最常用的容器类之一,也是面试的常客.它其实就是前文「数据结构与算法笔记(二)」中「散列表」的实现,处理散列冲突用的是“链表法”,并且在 JDK 1.8 做了优 ...
- 【JDK】JDK源码分析-ArrayList
概述 ArrayList 是 List 接口的一个实现类,也是 Java 中最常用的容器实现类之一,可以把它理解为「可变数组」. 我们知道,Java 中的数组初始化时需要指定长度,而且指定后不能改变. ...
- 【JDK】JDK源码分析-AbstractQueuedSynchronizer(1)
概述 前文「JDK源码分析-Lock&Condition」简要分析了 Lock 接口,它在 JDK 中的实现类主要是 ReentrantLock (可译为“重入锁”).ReentrantLoc ...
- 【JDK】JDK源码分析-ReentrantLock
概述 在 JDK 1.5 以前,锁的实现只能用 synchronized 关键字:1.5 开始提供了 ReentrantLock,它是 API 层面的锁.先看下 ReentrantLock 的类签名以 ...
- 【JDK】JDK源码分析-HashMap(2)
前文「JDK源码分析-HashMap(1)」分析了 HashMap 的内部结构和主要方法的实现原理.但是,面试中通常还会问到很多其他的问题,本文简要分析下常见的一些问题. 这里再贴一下 HashMap ...
随机推荐
- 【点击模型学习笔记】Modeling contextual factors of click rates_MS_AAAI2007
概要 并没有觉得这是篇高质量的文章,非常奇怪为什么可以发表在AAAI上面. 文章的创新点比較单薄:在传统点击率预測模型(LR)的基础上增加了两类新的特征,一个是位置特征.一个是广告上下文特征--即和它 ...
- MySQL数据库运维课程
MySQL数据库运维课程 http://www.dataguru.cn/article-4834-1.html?union_site=comm100 课程大纲 第一课:机器选型.系统规划 第二课:安装 ...
- visual studio code 编辑器的配置及快捷键等, vscode, csc
visual studio code (vsc) 对开发node.js,javascript,python,html,golang等比较友好,同时支持git浏览及分屏对比,运行速度快,所以是值得一用的 ...
- 包管理 ----- Linux操作系统rpm包安装方式步骤
Linux操作系统rpm包安装方式步骤 2016年08月04日 07:00:26 阅读数:17140 转自 : http://os.51cto.com/art/201003/186467.htm 特别 ...
- Andrew Ng-ML习题答案1
1.Linear Regression with Multiple Variables 转自:https://blog.csdn.net/mupengfei6688/article/details/5 ...
- Groovy介绍
关于 Groovy 这一节将学习 Groovy 的基础知识:它是什么,它与 Java 语言和 JVM 的关系,以及编写 Groovy 代码的一些要点. 一.什么是 Groovy? Groovy 是 J ...
- kail linux nmap命令
可用于: 检测活在网络上的主机(主机发现)检测主机上开放的端口(端口发现或枚举)检测到相应的端口(服务发现)的软件和版本检测操作系统,硬件地址,以及软件版本检测脆弱性的漏洞(Nmap的脚本) ---- ...
- SQL 中【NULL】和【无】烦躁的问题
很烦躁,烦躁的很,总结一下. 先简单的说下: NULL : 不确定的东西 无 :没有东西 复杂的见下文....... 一 .null值 下面举个最简单的例子,平常工作当中肯定比这个sq ...
- web.xml+spring mvc基本配置
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...
- Storm集成Siddhi
<Siddhi初探>中我们介绍了Siddhi的基本使用方法,并表示我们将把Siddhi集成到Storm中作为流任务处理引擎.本文将用<Storm初探>中的例子讲解如何集成Sid ...