我有几个实现两个接口的类。它们都实现了BaseInterface和其他一些特定于它们的接口。
我希望能够使用下面的loadClass方法来实例化.properties文件中引用的类并调用它们都包含的通用方法(因为它们实现了 BaseInterface)。
public interface BaseInterface {
public void doBase();
}
public interface SpecificInterface extends BaseInterface {
public void doSpecific();
}
public class SpecificClass implements SpecificInterface {
public void doBase() { ... }
public void doSpecific() { ... }
}
public class LoadClass() {
private PropertiesLoader propertiesLoader = new PropertiesLoader();
public <C extends BaseInterface> C loadClass(String propertyName) {
Class<C> theClass;
// Load the class.
theClass = propertiesLoader.getPropertyAsClass(propertyName);
// Create an instance of the class.
C theInstance = theClass.newInstance();
// Call the common method.
theInstance.doBase();
return theInstance;
}
}
不幸的是,当我运行代码时:
loadClassInstance.loadClass("SpecificClass");
我得到以下异常:
Exception in thread "main" java.lang.ClassCastException:
SpecificClass cannot be cast to BaseInterface
at LoadClass.loadClass
任何想法我将如何解决这个问题?
非常感谢,丹尼