Wie kann ich ein Java CharSequence
in ein konvertieren String
?
java
string
charsequence
Belgi
quelle
quelle
setText(CharSequence)
nicht das, was Sie brauchen?Hier gibt es ein subtiles Problem, das ein bisschen wie ein Gotcha ist.
Die
toString()
Methode hat eine Basisimplementierung inObject
.CharSequence
ist eine Schnittstelle; und obwohl dietoString()
Methode als Teil dieser Schnittstelle angezeigt wird, gibt es zur Kompilierungszeit nichts, was Sie dazu zwingt, sie zu überschreiben und die zusätzlichen EinschränkungenCharSequence
toString()
zu berücksichtigen , die das Javadoc der Methode für die Methode auferlegttoString()
. dh, dass es eine Zeichenfolge zurückgeben soll, die die Zeichen in der von zurückgegebenen Reihenfolge enthältcharAt()
.Ihre IDE hilft Ihnen nicht einmal, indem sie Sie daran erinnert, dass Sie sie wahrscheinlich überschreiben sollten
toString()
. In Intellij sehen Sie dies beispielsweise, wenn Sie eine neueCharSequence
Implementierung erstellen : http://puu.sh/2w1RJ . Beachten Sie das Fehlen vontoString()
.Wenn Sie sich auf
toString()
eine beliebige Version verlassenCharSequence
, sollte diese funktionieren, sofern derCharSequence
Implementierer seine Arbeit ordnungsgemäß ausgeführt hat. Wenn Sie jedoch Unsicherheiten vermeiden möchten, sollten Sie einStringBuilder
undappend()
wie folgt verwenden:quelle
CharSequence
Schnittstelle definiert explizittoString()
- der Implementierer wird dies nicht übersehen haben. Im Javadoc heißt es "Gibt eine Zeichenfolge zurück, die die Zeichen in dieser Sequenz in derselben Reihenfolge wie diese Sequenz enthält. Die Länge der Zeichenfolge entspricht der Länge dieser Sequenz" seit Beginn in 1.4 . Leute, bitte überprüfen Sie, was Sie upvoteStringBuilder
könnte genauso gut nicht das tun, was Sie erwarten. Gleiches gilt für alle anderen Schnittstellen wieList
oderSet
, insbesondere derenequals()
undhashCode()
Methoden, die ohne Überschreibungen kompiliert werden, aber vertraglich überschrieben werden müssen .Sie können String.valueOf () direkt verwenden
Dies ist jedoch dasselbe wie
toString()
eine Nullprüfung,charSequence
bevor tatsächlich toString aufgerufen wird.Dies ist nützlich, wenn eine Methode entweder a
charSequence
odernull
value zurückgeben kann.quelle
charSequence
null ist, ist die zurückgegebene Zeichenfolge"null"
und nichtnull
.