2014-12-02 2 views
0

나는 얼마 동안이 문제로 어려움을 겪어 왔습니다. 다음과 같이 정의 된 인터페이스가 있습니다 :JAVA 메서드 매개 변수 및 인터페이스

이것은 여러 모델 클래스로 구현됩니다.

public class SomeClass implements SomeInterace { 

    ... 
    @Override 
    public String someMethod(){ 
     ... 
    } 
} 

마지막으로 나는 SomeInterface을 준수 여러 모델을 가지고 기억의 해봐요 메소드를 호출 할 필요가있는 제 3 클래스가 있습니다.

public class SomeUsefulClass { 
    public void doSomethingCool(Class<SomeInterface>aParam) { 
     //How do I specify aParam.someMethod(); A cast doesn't work 
    } 
} 

답변

0

당신은 방법을 이미 코드에 표시하는 방법을 호출 할 수 있습니다 그래서 방법으로 정의했습니다.

aParam.someMethod(); 

실행되는 방법에 따라 런타임에 메소드에 전달 된 결과에 따라 호출되는 클래스가 발생합니다.

그래서 예를 들어 다음과 같은 클래스가있는 경우 : 람보르기니, 포르쉐와

페라리

을 그리고 그들은 모두 자동차 클래스를 구현합니다. 당신은 Ferrari의 인스턴스 인 Car 객체를 메소드에 전달할 수 있습니다. 그런 다음이 메소드에서 Ferrari 코드가 실행됩니다. 당신이 온 것을 객체 유형 JVM이 감지 할 수있는 런타임에 호출되는 클래스 코드를 작성할 때 정의 할 필요가 없습니다.

이것은 다형성의 고전적인 예이다.

6
public void doSomethingCool(SomeInterface aParam) { 
    aParam.someMethod(); 
}