Android StringBuilder 与可编辑

Android StringBuilder vs Editable

试图理解this answer, I failed to understand the difference between StringBuilder and Editable。此图像(减去手绘红色圆圈)来自该答案。

他们都有appenddeleteinsertreplace文本的方法。我看到 StringBuilder 是一个实际的 class 而 Editable 是一个接口。但是我可以用 textView.getEditableText()TextView 返回 Editable,如果它是一个接口,这看起来很奇怪。幕后的具体实现是怎样的?我还看到 Editable 可以有跨度,而 StringBuilder 没有。

我想我已经接近理解其中的区别了,但我还需要更多的解释。我很惊讶我找不到这个问题已经被问过的地方,所以我现在问。

再次,具体来说:

What is the difference between StringBuilder and Editable?

Editable 可以包含 html 这样的标记。 StringBuilder 仅包含纯文本。

But I can get an Editable back from a TextView with textView.getEditableText(), which seems strange if it is an interface. What is the concrete implementation behind the scenes?

这并不奇怪。 return是一个Editable,具体实现要看你怎么设置文本了。

is the object that I am getting back from TextView actually a SpannableStringBuilder? And if so, why do I get an incompatible types error if I write SpannableStringBuilder myString = textView.getEditableText();

可能是也可能不是。你所知道的是,这是一个可编辑的。 SpannableStringBuilderEditable,但 Editable 不是 SpannableStringBuilder,这就是为什么你不能分配 getEditableText 的 return 值到 SpannableStringBuilder 除非你向下投它。我