当前位置: 首页 > 面试题库 >

用Java进行鸭子输入的例子是什么?

郎健柏
2023-03-14
问题内容

我最近听说过鸭式打字,并且阅读了有关它的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。