2014-11-26 3 views
-3

Я читал примеры представления Duck Typing в Java с отражением. Я хотел бы знать, если это правильно:Пример утиной печати в 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

Возникли вопросы здесь? – Maroun

+0

Если это правильно – gibarsin

+1

Правильно, каким образом? Ваш код верен, но здесь нет утиной печати. – Maroun

ответ

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(); 
} 

Он также не представляется возможным в любой среде. Если администратор безопасности включен, ваш код должен обладать достаточными правами для выполнения вышеуказанного кода. Это также добавляет значительную работу.

Смежные вопросы