Duck Type

Tirado de pythonlogia :
Ao contrário do que muitas pessoas pensam duck typing não é um mecanismo disponível em linguagens de programação que usam tipagem dinâmica mas sim uma técnica (ou prática) de desenvolvimento. Essa técnica é explicada da seguinte forma:
Se um objeto anda como um pato e faz quack como um pato então ele é um pato.
O problema dessa explicação é que ela não fornece muitos elementos úteis para que as pessoas possam entender exatamente como isso funciona então irei recorrer à outra citação extraída do livro Design Patterns:
Program to an interface, not an implementation. (Programe para uma interface, não para uma implementação).
Duck Typing é uma técnica que funciona com qualquer linguagem de programação com suporte ao paradigma OO e diz basicamente que se o seu objeto responde à uma determinada mensagem (chamada de método) característica de um determinado tipo de objeto então esse objeto também pode ser considerado do mesmo tipo.
Acredito que esta técnica seja mais fácil de ser utilizada em linguagens dinâmicas como Python, Ruby e Smalltalk mas como fazer em Java? Em Java para que usemos um determinado comportamento de um objeto é necessário que ele defina previamente que usa a interface com o comportamento desejado.