【发布时间】:2017-01-30 10:15:24
【问题描述】:
在尝试理解this answer 时,我无法理解StringBuilder 和Editable 之间的区别。这张图片(减去手绘的红色圆圈)来自那个答案。
它们都有append、delete、insert 和replace 文本的方法。我看到StringBuilder 是一个实际的类,而Editable 是一个接口。但是我可以从带有textView.getEditableText() 的TextView 返回Editable,如果它是一个接口,这似乎很奇怪。幕后的具体实现是什么?我还看到Editable 可以有跨度,而StringBuilder 没有。
我想我已经接近理解其中的区别了,但我可以再解释一下。我很惊讶我找不到这个问题已经被问到了,所以我现在问它。
再次,特别是:
-
StringBuilder和Editable有什么区别? - 我应该在什么时候使用一个而不是另一个?
【问题讨论】:
-
Editable 可以保存标记,例如 html。 StringBuilder 只保存纯文本。 如果它是一个界面,这似乎很奇怪是什么意思?
-
我从
TextView返回的对象实际上是SpannableStringBuilder吗?如果是这样,如果我写SpannableStringBuilder myString = textView.getEditableText();,为什么会出现类型不兼容的错误? @黑带 -
我的问题可能会演变成:
SpannableStringBuilder和Editable有什么区别? -
SpannableStringBuilder是Editable,但Editable不是SpannableStringBuilder。前者是具体的,后者是抽象的。您不能将getEditableText分配给SpannableStringBuilder,除非您将其向下转换。 我从 TextView 返回的对象实际上是 SpannableStringBuilder,它可能是也可能不是。 -
@Blackbelt。好的,我认为现在一切都说得通了。随意让您的 cmets 成为答案。
标签: android stringbuilder android-editable