Substituindo um método em um objeto Java instanciado

Gostaria de substituir um método em um objeto que me foi entregue por uma fábrica sobre a qual tenho pouco controle.

Meu problema específico é que desejo substituir ogetInputStream egetOutputStream de umObjeto de soquete executarregistro de fio.

O problema genérico é o seguinte:

public class Foo {
    public Bar doBar() {
        // Some activity
    }
}

Onde eu gostaria de tomar um instanciadoFoo e substitua odoBar com o meu próprio que funcionaria da seguinte maneira:

Bar doBar() {
    // My own activity
    return original.doBar();
}

Para o soquete eu vou retornar umInputStream eOutputStream que são agrupados pelo log para interceptar os dados.

questionAnswers(9)

yourAnswerToTheQuestion