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
实现,是。