在某些类(如 MarketplaceBasicProductList
)和接口(interface) 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);
}
其他详细信息是:
1.
public interface IMarketplaceProductList extends Serializable {
public int getProductCount();
public IMarketplaceBasicProduct getProductMKPInfo(int index);
}
公共(public)类 MarketplaceBasicProductList 扩展 AbstractProductList
{ ......................公共(public)抽象类 AbstractProductList 实现 IProductList
{......................
我还需要在此处添加实现 IMarketplaceProductList 吗?
公共(public)接口(interface) IMarketplaceBasicProduct 扩展了可序列化
{ ...获取 MarketplaceBasicProduct 函数的方法..
5.公共(public)类 MarketplaceBasicProduct 扩展 BasicProduct 实现 IMarketplaceBasicProduct、IGenericProductFields {
公共(public)类 BasicProduct 扩展 AbstractProduct {
7.公共(public)抽象类 AbstractProduct 扩展 AbstractGenericProduct 实现 IProduct {
我是否还需要在此处添加实现 IMarketplaceBasicProduct
?
最佳答案
您将收到 ClassCastException
,因为您的类 MarketplaceBasicProductList
不是 IMarketplaceProductList
。
MarketplaceBasicProductList extends AbstractProductList implements IMarketplaceProductList
从您拥有的结构来看,AbstractProductList
对于每种类型的产品列表都是通用的,IMarketplaceProductList
将包含 MarketplaceBasicProductList
的特定方法>,因此只有 MarketplaceBasicProductList
会实现 IMarketplaceProductList
此外,我认为 IMarketplaceProductList
将提供 IProductList
之上及之上的功能,因此它的 IMarketplaceProductList
定义应该类似于:
public interface IMarketplaceProductList extends IProductList {
}
关于接口(interface)和某些类转换期间的 java classcastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10845441/