我最近听说过鸭式打字,并且阅读了有关它的Wikipedia文章,但是我很难将示例转换为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中 以通用方式访问 Java对象的 任何属性/字段,就像动态语言(例如Groovy,JavaScript)一样。在编写此管道代码时,我不知道它是什么类型的对象或属性/字段名称是什么。但是当我使用它时,我将知道属性/字段名称。 我当前的解决方案: 到目前为止,我已经编写了一个简单的包装器类,该包装器类用于获取Bean / POJO的属性并将其公开为。它很粗糙
本文向大家介绍layer.prompt输入层的例子,包括了layer.prompt输入层的例子的使用技巧和注意事项,需要的朋友参考一下 在某些页面我们只需要输入一个参数,那么layer.prompt是一个很好的选择,但是前提要打开 以上这篇layer.prompt输入层的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。” 我们并不关心对象是什么类型,到底是不是鸭子,只关心行为。 比如在python中,有很多file-like的东西,比如StringIO,GzipFile,socket。它们有很多相同的方法,我们把它们当作文件使用。 又比如list.extend()方法中,我们并不关心它的参数是不是list,只要它是可迭代的,
引用 Assoc.nsh 的内容: /**************************** 文件关联 NSIS 实用函数(修正) By:Ansifa 修正:2008年2月15日 *修正了关联错误(发布太急了,没发现,惭愧). 就是将下面代码改好了.大家自己找找改了什么:p WriteRegStr HKCR "${Project}.${type}" "" "${desc}" W
package hi; import hi.servlet; import hi.request; import hi.response; public class hello implements hi.servlet { public hello() { } public void handler(hi.request req, hi.
进一步的例子 请参阅ObservableIT,进一步举例说明。 对于使用手动筛选器API的演示,可以查看EventFilterIT。