我一直在努力解决这个问题。我有一个这样定义的接口:
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
}
}
答案 0 :(得分:6)
public void doSomethingCool(SomeInterface aParam) {
aParam.someMethod();
}
答案 1 :(得分:0)
您可以按照代码中显示的方式调用方法。
aParam.someMethod();
根据在运行时将哪个实现传递给该方法,会发生什么情况,那将是将被调用的类。
例如,如果您有以下课程:兰博基尼,保时捷和法拉利
他们都实现了Car类。你可以传递一个Car对象的方法,这是法拉利的一个实例,然后在方法中将执行法拉利代码。
您不需要定义何时编写将调用哪个类的代码,在运行时JVM可以检测到哪个对象类型。
这是多态性的典型例子。