JAVA方法参数和接口

时间:2014-12-02 21:11:54

标签: java interface

我一直在努力解决这个问题。我有一个这样定义的接口:

public interface SomeInterface {
    String someMethod();
}

这将由许多模型类实现,例如

public class SomeClass implements SomeInterace {

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

最后我有一个需要调用doSomething方法的第3类,记住我有多个符合SomeInterface的模型。所以我将方法定义为:

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

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:0)

您可以按照代码中显示的方式调用方法。

aParam.someMethod();

根据在运行时将哪个实现传递给该方法,会发生什么情况,那将是将被调用的类。

例如,如果您有以下课程:兰博基尼,保时捷和法拉利

他们都实现了Car类。你可以传递一个Car对象的方法,这是法拉利的一个实例,然后在方法中将执行法拉利代码。

您不需要定义何时编写将调用哪个类的代码,在运行时JVM可以检测到哪个对象类型。

这是多态性的典型例子。