2014-11-26 6 views
-3

나는 리플렉션을 통해 자바에서 오리 타이핑의 표현 예제를 읽었습니다. 나는이 맞다면 알고 싶습니다 : 주에서오리에서 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

자바에는 오리 타이핑이 없다가 파이썬에서와 같이. 리플렉션을 사용하여 클래스에 호출 할 메소드가 있는지 찾지 만 실제로는 혼란 스럽습니다.

그것은 그것은 모든 환경도 불가능하다

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

것 같습니다. 보안 관리자가 활성화 된 경우 코드에 위의 코드를 실행할 수있는 충분한 권한이 있어야합니다. 그것은 또한 실질적인 작업을 추가합니다.