是否可以在Java中实现私有接口或扩展私有类?

时间:2015-09-03 07:55:45

标签: java android

我与android EditText斗争了好几天,试图摆脱"粘贴"选择文本时弹出。 (我的扩展EditText只读和可选)。

从anwser到问题:EditText: Disable Paste/Replace menu pop-up on Text Selection Handler click event

覆盖 package-private方法 canPaste()对于dalvik运行时是可以的,但不能使用ART上面的android 5.0。

所以我找到了解决问题的其他方法,而不是覆盖方法,但尝试替换编辑器的字段变量

我认为EditText的助手类Editor有很多具体的逻辑,看看我是否可以在适当的时间用虚拟子类替换InsertionPointCursorController,它会不显示弹出窗口。 (InsertionPointCursorController是一个私有类,它实现了一个私有接口,所以要用虚拟子类替换它,我需要扩展类或实现接口)

public boolean performLongClick(boolean handled) {
    // Long press in empty space moves cursor and shows the Paste affordance if available.
    if (!handled && !isPositionOnText(mLastDownPositionX, mLastDownPositionY) &&
            mInsertionControllerEnabled) {
        final int offset = mTextView.getOffsetForPosition(mLastDownPositionX,
                mLastDownPositionY);
        stopSelectionActionMode();
        Selection.setSelection((Spannable) mTextView.getText(), offset);
        getInsertionController().showWithActionPopup();
        handled = true;
    }

查看 getInsertionController()。showWithActionPopup(); 显示弹出窗口:(

现在我将尝试替换删除回调以替代

1 个答案:

答案 0 :(得分:0)

您无法扩展外部私有类(默认位于同一个包中并受其他包保护)和接口。

扩展您需要更改的父类,并覆盖您需要使用的方法,但同样,您无法覆盖私有方法。 你可以重新编码它们(漂亮的#34;重载")。