2014-12-02 44 views
0

我一直在爲此奮鬥一段時間。我有一個如下定義的接口:JAVA方法參數和接口

public interface SomeInterface { 
    String someMethod(); 
} 

這將通過許多模型類實現,例如,

public class SomeClass implements SomeInterace { 

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

最後我有第三類需要調用doSomething方法,請記住我有多個符合SomeInterface的模型。所以我的方法定義爲:

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

回答

0

您可以調用該方法你已經顯示在您的代碼的方式。

aParam.someMethod(); 

會發生什麼事是,這取決於實現已經在運行時傳遞給方法,那麼這將是類,將被調用。

因此,舉例來說,如果你有以下類:蘭博基尼,保時捷和法拉利

而且他們都實現了汽車類。您可以將一個Car對象(它是Ferrari的一個實例)的方法傳遞給該方法,然後在方法中執行Ferrari代碼。

當你寫一個類將被調用的代碼,在運行時,JVM可以檢測排在什麼樣的對象類型,您不需要定義。

這是多態的經典例子。

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