@SuppressWarnings ArrayList <x>可能不包含Y类型的对象

时间:2017-06-08 13:22:02

标签: java arraylist annotations warnings contains

我有一个名为CompressedCardInfo的班级,其MtgCard作为其成员,而CompressedCardInfo(或扩展版本的班级)已超载equals方法以考虑检查CompressedCardInfo是否等于MtgCard

现在这不是非常重要,因为它们只是警告(但是他们打扰了我),但是当我在ArrayList中有CompressedCardInfo并且调用ArrayList.contains.indexOf时,我得到了警告告诉我列表中可能没有MtgCard类型的对象。

如何取消此列表的特定警告?或者有更好的方法来处理这种比较吗?

感谢。

for (Pair<MtgCard, Boolean> card : decklist) {
            /* Translate the set code to TCG name of course it's not saved */
            card.first.setName = CardDbAdapter.getSetNameFromCode(card.first.setCode, database);
            if (changedCardName == null || changedCardName.equals(card.first.mName)) {
                if (mCompressedDecklist.contains(card.first)) {
                    CompressedDecklistInfo existingCard = mCompressedDecklist.get(mCompressedDecklist.indexOf(card.first));
                    if (existingCard.mIsSideboard == card.second) {
                        mCompressedDecklist.get(mCompressedDecklist.indexOf(card.first)).add(card.first);
                    } else {
                        mCompressedDecklist.add(new CompressedDecklistInfo(card.first, card.second));
                    }
                } else {
                    mCompressedDecklist.add(new CompressedDecklistInfo(card.first, card.second));
                }
                if (mShowTotalDecklistPrice) {
                    loadPrice(card.first.mName, card.first.setCode, card.first.mNumber);
                }
            }
        }

第5行(包含),6(indexOf)和8(indexOf)上的调用。我在那里收到警告,因为ArrayList的类型为CompressedDecklistInfo(从CompressedCardInfo扩展。这也发生在其他地方。

1 个答案:

答案 0 :(得分:0)

所以我只是要遵循最佳做法并正确解决这些问题。