java – 内部类在一个接口内实现相同的接口,我们通过这个实现?

我的问题:

我正在看TextWatcher的源代码,我没有得到这个概念。
延伸到NoCopySpan是什么意思?

TextWatcher.java:

public interface TextWatcher extends NoCopySpan {
     public void beforeTextChanged(CharSequence s, int start, int count, int after);
     public void onTextChanged(CharSequence s, int start, int before, int count);
     public void afterTextChanged(Editable s);
}

NoCopySpan.java:

package android.text;

/**
 * This interface should be added to a span object that should not be copied into a new Spanned when performing a slice or copy operation on the original Spanned it was placed in.
 */
public interface NoCopySpan {
    /**
     * Convenience equivalent for when you would just want a new Object() for
     * a span but want it to be no-copy.  Use this instead.
     */
    public class Concrete implements NoCopySpan {}
}
最佳答案
NoCopySpan只是一个marker interface.根据javadoc,它用于修改Spanned对象的复制例程的行为(它依赖于组件的类型)。例如,android.text.SpannableStringBuilder使用这种继承信息在构建时跳过复制。

这种方法有一些缺点,但仍然很常见。具体类存在的原因是提供方便的方法构建No-Copy虚拟(或默认)实现NoCopySpan界面。

转载注明原文:java – 内部类在一个接口内实现相同的接口,我们通过这个实现? - 代码日志