如何将Java CharSequence
转换为String
?
通过调用其toString()
方法。
以与此序列相同的顺序返回包含此序列中字符的字符串。字符串的长度将是该序列的长度。
这里有一个微妙的问题,有点像陷阱。
toString()
方法在Object
中有一个基本实现。 CharSequence
是一个界面;虽然toString()
方法作为该接口的一部分出现,但在编译时没有任何内容会强制您覆盖它并遵守CharSequence
toString()
方法的javadoc对toString()
方法的附加约束;即它应该返回一个字符串,其中包含charAt()
返回的顺序中的字符。
您的IDE甚至不会通过提醒您可能应该覆盖toString()
来帮助您。例如,在intellij中,如果您创建一个新的CharSequence
实现,这将是您所看到的:http://puu.sh/2w1RJ。请注意没有toString()
。
如果你依赖toString()
任意CharSequence
,它应该工作,只要CharSequence
实现者正确地完成他们的工作。但如果你想完全避免任何不确定性,你应该使用StringBuilder
和append()
,如下所示:
final StringBuilder sb = new StringBuilder(charSequence.length());
sb.append(charSequence);
return sb.toString();
你可以直接使用String.valueOf()
String.valueOf(charSequence)
虽然这与toString()
相同,但它在实际调用toString之前对charSequence
进行了空检查。
当方法可以返回charSequence
或null
值时,这很有用。