String系列源码解析01 - 总体框架

来源:互联网 发布:ubuntu光盘安装教程 编辑:程序博客网 时间:2024/06/05 03:23

String系列框架图:


一、CharSequence

CharSequence的定义如下:
public interface CharSequence {}

CharSequence是一个接口,表示char值的一个可读序列。此接口对许多不同种类的char序列提供统一的自读访问。此接口不修改该equals和hashCode方法的常规协定,因此,通常未定义比较实现 CharSequence 的两个对象的结果。正因如此,不推荐使用任意的CharSequence实例作为Set集合的元素或者Map对象的键,这是CharSequence源码中明确说明的。

二、Comparable

Comparable的定义如下:
public interface Comparable<T> {}

强行对实现它的每个类的对象进行整体排序,实现此接口的对象列表(和数组)可以通过Collections.sort或Arrays.sort进行自动排序。实现此接口的对象可用做SortedMap对象的键或SortedSet对象的元素,而不需要指定Comparator实例。

三、Appendable

Appendable的定义如下:
public interface Appendable {}

Appendable接口的实现类的对象能够被添加 char 序列和值。如果某个类的实例打算接收取自 java.util.Formatter 的格式化输出,那么该类必须实现 Appendable 接口。 要添加的字符应该是有效的 Unicode 字符。 Appendable 对于多线程访问而言没必要是安全的。线程安全由扩展和实现此接口的类负责。

四、AbstractStringBuilder

AbstractStringBuilder的定义如下:
abstract class AbstractStringBuilder implements Appendable, CharSequence {}

AbstractStringBuilder实现了CharSequence和Appendable接口,因此AbstractStringBuilder是一个可变的字符序列。在任意时间点,它包含特定的字符序列,但是序列的内容和长度都可以通过调用特定的方法进行修改。

StringBuffer和StringBuilder都是AbstractStringBuilder的子类,正是AbstractStringBuilder实现了可变字符序列需要的方法,使得StringBuffer和StringBuilder的实现变得更加简单。


未完待续。。。

0 0
原创粉丝点击