在尝试理解this answer时,我无法理解StringBuilder
和Editable
之间的区别。此图像(减去手绘的红色圆圈)来自该答案。
它们都具有用于append
,delete
,insert
和replace
文本的方法。我看到StringBuilder
是一个实际的类,而Editable
是一个接口。但是我可以用Editable
从TextView
找回textView.getEditableText()
,如果它是一个接口,这似乎很奇怪。幕后的具体实现是什么?我还看到Editable
可以有跨度,而StringBuilder
没有。
我想我已经接近了解两者之间的区别,但是我可以使用更多的解释。令我惊讶的是,我找不到在哪里提出这个问题,所以我现在要提出。
同样,具体来说:StringBuilder
和Editable
有什么区别?
我什么时候应该使用另一种?
最佳答案
StringBuilder和Editable有什么区别?Editable
可以保存诸如html
之类的标记。 StringBuilder
仅包含纯文本。
但是我可以从TextView中使用
textView.getEditableText(),如果它是一个接口,这似乎很奇怪。
幕后的具体实现是什么?
这并不奇怪。它返回一个Editable
,具体实现取决于您如何设置文本。
是我从TextView回来的对象,实际上是
SpannableStringBuilder?如果是这样,为什么我会得到一个不兼容的类型
如果我写SpannableStringBuilder myString =错误
textView.getEditableText();
可能是,也可能不是。您所知道的是可编辑的。 SpannableStringBuilder
是Editable
,但是Editable
不是SpannableStringBuilder
,这就是为什么除非向下转换,否则不能将getEditableText
的返回值分配给SpannableStringBuilder
的原因。一世
关于android - Android StringBuilder与可编辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41933381/