Java CharSequence.length()是否总是与String.length()相同?
正如标题所说。以下陈述是否保证始终正确Java CharSequence.length()是否总是与String.length()相同?,java,android,Java,Android,正如标题所说。以下陈述是否保证始终正确 CharSequence x; String y; y = x.toString(); if (x.length() == y.length()) // will this ALWAYS be true? (e.g. unicode, MLP, etc) 只有一个原因无法保证:CharSequence是一个接口。它没有length()方法的实现,只有它的声明。因此,任何人都可以按照自己的方式实施。所以我可以让一个类MyCharSequen
CharSequence x;
String y;
y = x.toString();
if (x.length() == y.length()) // will this ALWAYS be true? (e.g. unicode, MLP, etc)
只有一个原因无法保证:
CharSequence
是一个接口
。它没有length()
方法的实现,只有它的声明。因此,任何人都可以按照自己的方式实施。所以我可以让一个类MyCharSequence实现CharSequence
并实现length
方法来返回10
始终CharSequence是一个接口,String是实现。长度是否相等取决于CharSequence的实现。对他们中的大多数人来说,我会说平等是有道理的,但你不能指望这一点 中的方法声明提到了答案:
串到串()
返回一个字符串,该字符串包含
顺序与此序列相同字符串的长度将是
此序列的长度
因此,如果实现正确,则返回的字符串
与字符序列
具有相同的长度
当然,如果实现不完全基于接口契约。这不是真的,但这也不是CharSequence
的有效实现…但这不能保证适用于所有API
想象一下同样的事情,一个列表
,无论添加了多少元素,它总是返回5的大小。。。这也没有意义,因为集合
界面显示:
int size()
返回此集合中的元素数
依我看,Java是基于接口和文档的,如果你也不能信任,你就不能信任实现。CharSequence是一个接口。你可以实现一个CharSequence来规范文本,然后它可能会违反长度相等。对于正常使用,长度相等,字符串基于字符数组。对于正确的CharSequence
实现,是。