所以我读了this answer和this answer关于subSequence()
和subString()
之间的区别,并且我知道两者之间的唯一区别是返回类型。实际上,subSequence()
在后台调用了subString()
。
此外,此article on subSequence最后指出:
使用
subSequence
方法没有没有好处,理想情况下,您应该 始终使用Stringsubstring
方法。
使用subSequence()
真的没有好处吗?如果是这样,为什么要引入?如果有好处,那是什么,它的已知用途是什么?
答案 0 :(得分:4)
当抽象适用于程序时,就有了好处。例如:
public CharSequence getPrefix(CharSequence cs) {
return cs.subSequence(0, 1);
}
这可以称为任何CharSequence
实例(String
,StringBuilder
,StringBuffer
等)
CharSequence cs = "John";
getPrefix("Name");
cs = new StringBuilder("James");
getPrefix(cs);
普通应用程序几乎不使用CharSequence
接口,但这在某些情况下(尤其是库)是适用的。
写并没有多大意义:
CharSequence sub = stringObject.subSequence(0, 1);
因为通常希望使用String
类型的子字符串,但是框架可能更喜欢在其API中使用CharSequence
,而不是String
。
答案 1 :(得分:2)
有很多使用CharSequences
而不是Strings
的API-当CharSequence
足够好并且API的作者认为增加了弹性时,就会发生这种情况使用可变实现进行积极优化的可能性)使Strings提供的安全性优势显得过分。
Android是一个很好的例子,它几乎是在小部件上定义的几乎所有方法(例如,TextView),人们可能会期望采用String
-例如setText
-改为使用CharSequence
。
因此,当然,当TextView
只需要取一部分文本时,就需要使用subsequence
方法。
答案 2 :(得分:1)
使用subSequence()真的没有好处吗?
-> I do not see any real benefit of that method.
如果是这样,为什么要引入它?
-> As per Java API note "This method is defined so that the String class can implement the CharSequence interface". As `CharSequence` has the abstract method CharSequence subSequence(int start, int end);