我需要重寫隱藏類的一個方法(用@hide標記),它只在其包中可見。有什麼方法可以擴展它嗎?Java如何擴展一個隱藏類
更具體地說,我需要重寫的android.widget.EditorgetNextCursorOffset()
因爲該方法不ReplacementSpan
很好地工作。
我需要重寫隱藏類的一個方法(用@hide標記),它只在其包中可見。有什麼方法可以擴展它嗎?Java如何擴展一個隱藏類
更具體地說,我需要重寫的android.widget.EditorgetNextCursorOffset()
因爲該方法不ReplacementSpan
很好地工作。
您可以在您的項目中定義相同的包,android.widget
。那麼你可以擴展它:
public class ProjectSpecificEditor extends Editor {
// constructors et all
public int getNextCursorOffset() {
//...
}
}
但請注意,這是不鼓勵。即框架的下一個版本可能會改變一些類/方法簽名。那麼你只能責怪你自己。
爲什麼不使用你自己的裝飾器和編輯器的所有方法,只需要getNextCursorOffset? – SMA
@SMA你的意思是克隆Editor.java?這將是瘋狂的,因爲它有5K +代碼行。 – mljli
不克隆。你會在你的新類中編寫編輯器,並將其他方法的調用委託給Editor實例,而對於getNextCursorOffset,則可以實現自己的邏輯。 – SMA