我一直在阅读带有反射的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();
}
答案 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();
}
在每个环境中都不可能。如果启用了安全管理器,则您的代码应具有执行上述代码的足够权限。这也增加了实质性的工作。