Java设计上不适合鸭子输入。您可能选择这样做的方式是反思:
public void doSomething(Object obj) throws Exception { obj.getClass().getMethod("getName", new Class<?>[] {}).invoke(obj);}但是我主张使用一种动态语言(例如Groovy)来实现,在这种语言中,它更有意义:
class Duck { quack() { println "I am a Duck" }}class Frog { quack() { println "I am a Frog" }}quackers = [ new Duck(), new Frog() ]for (q in quackers) { q.quack()}参考



