0

一部のクラスとインターフェイスクラスのClassCastException間でキャスト中 に取得しています-なぜですか?MarketplaceBasicProductListIMarketplaceProductList

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 class MarketplaceBasicProductList extends AbstractProductList{ …………

  2. public abstract class AbstractProductList implements IProductList{ …………

IMarketplaceProductList の実装もここに追加する必要がありますか?

  1. public interface IMarketplaceBasicProduct extends Serializable{ ...MarketplaceBasicProduct 関数のメソッドを取得..

5.public class MarketplaceBasicProduct extends BasicProduct implements IMarketplaceBasicProduct, IGenericProductFields {

  1. public class BasicProduct extends AbstractProduct {

7。public abstract class AbstractProduct extends AbstractGenericProduct implements IProduct {

ここにも実装を追加する必要がありIMarketplaceBasicProductますか?

4

1 に答える 1

2

ClassCastExceptionクラスMarketplaceBasicProductList が ではない ため、取得していますIMarketplaceProductList

MarketplaceBasicProductList extends AbstractProductList implements IMarketplaceProductList 

あなたが持っている構造から見ると、AbstractProductListすべてのタイプの製品リストに一般的であり、IMarketplaceProductList特定のメソッドが含まれているためMarketplaceBasicProductListMarketplaceBasicProductList実装するのはIMarketplaceProductList

IMarketplaceProductListまた、以上の機能を提供すると思うIProductListので、IMarketplaceProductList定義は次のようになります。

public interface IMarketplaceProductList extends IProductList {

}
于 2012-06-01T06:34:06.223 に答える