接口和某些类转换期间的java classcastexception
我在某个类(比如接口和某些类转换期间的java classcastexception,java,Java,我在某个类(比如MarketplaceBasicProductList和接口IMarketplaceProductList类)之间转换时遇到ClassCastException,为什么 public static IMarketplaceProductList createMarketplaceBasicProductList(Table basicInfoTable) { ArrayList list = new ArrayList(); if (basicIn
MarketplaceBasicProductList
和接口IMarketplaceProductList
类)之间转换时遇到ClassCastException
,为什么
public static IMarketplaceProductList createMarketplaceBasicProductList(Table basicInfoTable) {
ArrayList list = new ArrayList();
if (basicInfoTable != null) {
for (int i = 1; i <= basicInfoTable.getRowCount(); i++) {
IMarketplaceBasicProduct product = createMarketplaceBasicProduct(basicInfoTable, i);
list.add(product);
}
}
return (IMarketplaceProductList) new MarketplaceBasicProductList(list);
}
公共类MarketplaceBasicProductList扩展了AbstractProductList
{公共抽象类AbstractProductList实现IPProductList
{公共接口IMarketplaceBasicProduct扩展了可序列化的
{…获取MarketplaceBasicProduct函数的方法public类MarketplaceBasicProduct扩展BasicProduct实现IMarketplaceBasicProduct,IGenericProductFields{
公共类BasicProduct扩展了AbstractProduct{
公共抽象类AbstractProduct扩展AbstractGenericProduct实现IPProduct{
我是否还需要在此处添加实现
IMarketplaceBasicProduct
?您将获得ClassCastException
,因为您的类MarketplaceBasicProductList
不是IMarketplaceProductList
MarketplaceBasicProductList extends AbstractProductList implements IMarketplaceProductList
从您拥有的结构来看,AbstractProductList
对于每种类型的产品列表都是通用的,IMarketplaceProductList
将包含MarketplaceBasicProductList
的特定方法,因此只有MarketplaceBasicProductList
将实现IMarketplaceProductList
另外,我觉得IMarketplaceProductList
将在IProductList
上提供功能,因此它IMarketplaceProductList
的定义应该是:
public interface IMarketplaceProductList extends IProductList {
}
public interface IMarketplaceProductList extends IProductList {
}