CharSequence.length()是否始终与String.length()相同?

时间:2018-03-29 08:30:41

标签: java android

就像标题所说的那样。以下陈述是否保证始终为真?

CharSequence x;
String       y;

y = x.toString();

if (x.length() == y.length()) // will this ALWAYS be true? (e.g. unicode, MLP, etc)

3 个答案:

答案 0 :(得分:2)

由于一个原因无法保证:CharSequenceinterface。它没有length()方法的实现,只有它的声明。所以任何人都可以按照他想要的方式实现它。所以我可以创建一个课程MyCharSequence implements CharSequence并实施length方法return 10总是

答案 1 :(得分:1)

CharSequence.toString中的方法声明提到答案:

  

String toString()

     

返回一个字符串,其中包含此序列中的字符   与此序列相同的顺序。 字符串的长度为   这个序列的长度

如果正确完成了实现,则返回的Stringlength具有相同的CharSequence

当然,如果实现不完全基于接口契约。这不是真的,但这不是CharSequence的有效实现...... 但是每个API都无法保证这一点。

想象一下List同样的事情总是返回大小为5,无论添加的元素数量是多少......它没有意义,因为Collection接口说:

  

int size()

     

返回此集合中的元素数。

IMO,Java基于接口和文档,如果你也不信任,你就不能相信实现。

答案 2 :(得分:0)

CharSequence是一个接口,String是实现。如果长度相等或不相等,则取决于CharSequence的实现。对于他们中的大多数人来说,我会说平等是有意义的,但你不能指望它。