2016-07-26 166 views
1

我需要重寫隱藏類的一個方法(用@hide標記),它只在其包中可見。有什麼方法可以擴展它嗎?Java如何擴展一個隱藏類

更具體地說,我需要重寫的android.widget.EditorgetNextCursorOffset()因爲該方法不ReplacementSpan很好地工作。

+0

爲什麼不使用你自己的裝飾器和編輯器的所有方法,只需要getNextCursorOffset? – SMA

+0

@SMA你的意思是克隆Editor.java?這將是瘋狂的,因爲它有5K +代碼行。 – mljli

+0

不克隆。你會在你的新類中編寫編輯器,並將其他方法的調用委託給Editor實例,而對於getNextCursorOffset,則可以實現自己的邏輯。 – SMA

回答

0

您可以在您的項目中定義相同的包,android.widget。那麼你可以擴展它:

public class ProjectSpecificEditor extends Editor { 
    // constructors et all 
    public int getNextCursorOffset() { 
     //... 
    } 

} 

但請注意,這是不鼓勵。即框架的下一個版本可能會改變一些類/方法簽名。那麼你只能責怪你自己。

+0

謝謝,塔馬斯!沒有試過這種方式。 – mljli

+0

對不起,我沒有測試它。即使我定義了相同的包,Android Studio仍然無法解析'編輯器'。有什麼應該配置? – mljli

+0

良好的交叉檢查是否可以從命令行進行編譯。 –