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或nullvalue 时,这很有用。
charSequence为null,则返回的字符串将为"null"and not null。
setText(CharSequence)不满足您的需求吗?