cot*_*aws 11 java reflection android overriding
我需要覆盖一个非公共API,以便使用Android的WebView解决问题.
api是隐藏的,但它是公开的:
/**
* ...
*
* @hide pending API council approval
*/
public boolean selectText() {
...
}
Run Code Online (Sandbox Code Playgroud)
所以我可以通过简单地在我自己的WebView类中声明它来覆盖它,减去@Override:
public boolean selectText() {
...
}
Run Code Online (Sandbox Code Playgroud)
是否可以从我的覆盖中调用super方法?通常我可以写:
public boolean selectText() {
return super.selectText();
}
Run Code Online (Sandbox Code Playgroud)
但该方法是隐藏的,所以super.selectText()不可用.如果我使用反射:
public boolean selectText() {
return (Boolean) WebView.class.getMethod("selectText").invoke(this, (Object[]) null);
}
Run Code Online (Sandbox Code Playgroud)
我得到一个无限循环,因为它调用我的重写方法.
反正有没有覆盖这个方法,并能够调用超级方法?
谢谢!