前言
CharSequence是一個接口,比較常見的String、StringBuilder、StringBuffer都實現了這個接口。
當我們看到一個API裏面有CharSequence的時候,它也是可以被其子類代替的,一般用String代替即可。
CharSequence詳情介紹
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 描述的就是一個字符串
,以後見到就不要感覺的陌生了。
Android 中 CharSequence與String的區別
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,用重載的方式實現相應功能)