CharSequence
A CharSequence
ist eine Schnittstelle, keine echte Klasse. Eine Schnittstelle ist nur ein Satz von Regeln (Methoden), die eine Klasse enthalten muss, wenn sie die Schnittstelle implementiert. In Android ist eine CharSequence
ist ein Oberbegriff für verschiedene Arten von Textstrings. Hier sind einige der häufigsten:
(Sie können mehr über die Unterschiede zwischen diesen Methoden lesen aquí .)
Wenn Sie eine CharSequence
Objekt, dann ist es tatsächlich ein Objekt einer der Klassen, die die CharSequence
. Zum Beispiel:
CharSequence myString = "hello";
CharSequence mySpannableStringBuilder = new SpannableStringBuilder();
Der Vorteil einer allgemeinen Dachform wie CharSequence
ist, dass Sie mehrere Typen mit einer einzigen Methode behandeln können. Wenn ich zum Beispiel eine Methode habe, die eine CharSequence
als Parameter übergeben, könnte ich eine String
oder eine SpannableStringBuilder
und es würde mit beiden umgehen.
public int getLength(CharSequence text) {
return text.length();
}
Zeichenfolge
Man könnte sagen, dass ein String
ist nur eine Art von CharSequence
. Doch im Gegensatz zu CharSequence
Es handelt sich um eine echte Klasse, aus der Sie Objekte erstellen können. Sie könnten also Folgendes tun:
String myString = new String();
aber das können Sie nicht tun:
CharSequence myCharSequence = new CharSequence(); // error: 'CharSequence is abstract; cannot be instantiated
Desde CharSequence
ist nur eine Liste von Regeln, die String
konform ist, könnten Sie dies tun:
CharSequence myString = new String();
Das bedeutet, dass jedes Mal, wenn eine Methode nach einem CharSequence
ist es in Ordnung, ihm eine String
.
String myString = "hello";
getLength(myString); // OK
// ...
public int getLength(CharSequence text) {
return text.length();
}
Das Gegenteil ist jedoch nicht der Fall. Wenn die Methode eine String
können Sie ihm nicht etwas übergeben, von dem nur allgemein bekannt ist, dass es ein CharSequence
denn es könnte sich tatsächlich um eine SpannableString
oder eine andere Art von CharSequence
.
CharSequence myString = "hello";
getLength(myString); // error
// ...
public int getLength(String text) {
return text.length();
}
1 Stimmen
Bessere Antworten finden Sie unter Genauer Unterschied zwischen CharSequence und String in Java