鸭子在Java中打字的例子

时间:2014-11-26 14:18:29

标签: java reflection interface typing

我一直在阅读带有反射的Duck Typing in Java表示的例子。我想知道这是否正确:

public interface Quackable {
    public void quack();
}

主要......

Object[] vec = {(Here I add some instances)};

for(int i=0; i < vec.length; i++) {
    if(vec[i] instanceof Quackable)
        vec[i].quack();
}

1 个答案:

答案 0 :(得分:1)

Java中没有鸭子类型,因为它在Python中。您可以使用反射来查找该类是否有您想要调用的方法,但这确实很麻烦。

看起来像那样

Class<?> aClass = object.getClass();
try {
    Method method = aClass.getMethod("methodName", argType1, argType2);
    method.invoke(arg1, arg2)
} catch (NoSuchMethodException | SecurityException e) {
    e.printStackTrace();
}

在每个环境中都不可能。如果启用了安全管理器,则您的代码应具有执行上述代码的足够权限。这也增加了实质性的工作。