接口(interface)和某些类转换期间的 java classcastException

标签 java

在某些类(如 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);

}
  1. 公共(public)类 MarketplaceBasicProductList 扩展 AbstractProductList { ......................

  2. 公共(public)抽象类 AbstractProductList 实现 IProductList {......................

我还需要在此处添加实现 IMarketplaceProductList 吗?

  1. 公共(public)接口(interface) IMarketplaceBasicProduct 扩展了可序列化 { ...获取 MarketplaceBasicProduct 函数的方法..

5.公共(public)类 MarketplaceBasicProduct 扩展 BasicProduct 实现 IMarketplaceBasicProduct、IGenericProductFields {

  1. 公共(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/

相关文章:

java - 无法找出在图形内移动的正确算法

java - Google meet、zoom 或 vetera 无法与 android webview 一起使用

java - Jersey 1.19 在将路径和请求参数注入(inject)请求处理程序方法之前验证它们

Java - 修改二进制序列化对象的serialVersionUID

java - 带 Jersey 库的 Odoo ERP java API 客户端

java - 如何将 JPanel 用作 JButton?

java - 扩展泛型类的类的错误覆盖方法

java - 无法检测类 IllegalArgumentException

java - 错误 Android Volley 意外响应代码 400

java - Gson 为特定类或字段序列化 null