CharSequence是一个接口,比较常见的String、StringBuilder、StringBuffer都实现了这个接口。
当我们看到一个API里面有CharSequence的时候,它也是可以被其子类代替的,一般用String代替即可。
CharSequence是一个描述字符串结构的接口,在这个接口里面一般发现有三种常用的子类:
Stirng类 public final class String extends Object implements Serializable, Comparable<String>, CharSequence StringBuffer类 public final class StringBuffer extends Object implements Serializable, CharSequence StringBuilder类 public final class StringBuilder extends Object implements Serializable, CharSequence现在只要有字符串就可以为CharSequence实例化,CharSequence本身是一个接口,在该接口中有如下方法:
获取指定索引的字符:public char charAt(int index);获取字符串长度:public int length();截取部分字符串:public CharSequence subSequence(int start, int end); 范例:字符串截取 public static void main(String[] args) { CharSequence str = "hello world"; CharSequence sub = str.subSequence(6,11); System.out.println(sub); }CharSequence 描述的就是一个字符串,以后见到就不要感觉的陌生了。
CharSequence 与 String 都能用于定义字符串,但CharSequence是个接口,Sting实现了它。
所以也可以把CharSequence看做String的父类。
例如:
public void setText(CharSequence string){ ... } public void setText(String string){ ... }这2个方法可以同时存在一个类中,因为它们参数不同,都是setText()的重载。
(另外,在Android中,TextView的setText(CharSequence string)方法是终态的(final),所以子类不能覆盖,只能采取上述方式,参数设为String,用重载的方式实现相应功能)
参考:CharSequence详情介绍
CharSequence与String的区别