Java中鸭子打字的例子是什么?
2022-09-01 05:43:40
我最近刚听说鸭子打字,我读了维基百科上关于它的文章,但我很难将这些例子翻译成Java,这真的有助于我的理解。
有谁能举出一个在Java中打字的明显例子,以及我如何使用它?
我最近刚听说鸭子打字,我读了维基百科上关于它的文章,但我很难将这些例子翻译成Java,这真的有助于我的理解。
有谁能举出一个在Java中打字的明显例子,以及我如何使用它?
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()
}
请参阅此博客文章。它非常详细地介绍了如何使用动态代理在Java中实现鸭子类型。
综上所述: