Answers:
通过调用其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();
StringBuilder
可能无法完成您期望的操作。对于任何其他接口(例如List
或)Set
,也是如此,尤其是它们的equals()
和hashCode()
方法,它们将进行编译而不会覆盖,但必须根据合同对其进行覆盖。
您可以直接使用String.valueOf()
String.valueOf(charSequence)
尽管这与在实际调用toString之前toString()
对null进行空检查相同charSequence
。
当方法可以返回a charSequence
或null
value 时,这很有用。
charSequence
为null,则返回的字符串将为"null"
and not null
。
setText(CharSequence)
不满足您的需求吗?