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
    }
}
公牛的分支

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

aParam.someMethod();

发生的事情是,取决于在运行时将哪种实现传递给该方法,然后将其作为要调用的类。

因此,例如,如果您具有以下类别:兰博基尼,保时捷和法拉利

他们都实现了Car类。您可以将Car对象传递给方法,该对象是Ferrari的实例,然后在该方法中将执行Ferrari代码。

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

这是多态的经典示例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章