ソースコードがわかっているクラスの関数を置き換えたい。問題は、関数がプライベートであるためにオーバーライドできないことと、クラスを拡張して機能全体をオーバーライドできないことです。これは、考えられるすべてのコンストラクターに不正な呼び出しがあるためです。
今、私は完全に迷子になっています。私はその望ましい機能をどのように実装できるかわかりません(Android VideoViewコントロールのコントロール、別名MediaControllerのテーマ)。関数をリフレクションなどに置き換える方法はありますか?それとも、スーパークラスのコンストラクターではなく、スーパースーパークラスと呼ぶことは可能ですか?
これが私の問題を示す非常に基本的なクラスです:
public class Base {
public Base(int state) {
// must be called
}
}
public class Example extends Base {
public Example(int state, boolean bla) {
super(state);
badCall();
}
public Example(int state) {
this(state, false);
}
private badCall() {
// doing bad things
}
}
Example
また、クラスを単純にコピーできないように、のインスタンスが必要であることに注意してください。