我已经为此苦苦挣扎了一段时间。我有一个这样定义的接口:
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] 删除。
我来说两句