我有一个名为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
扩展。这也发生在其他地方。
答案 0 :(得分:0)
所以我只是要遵循最佳做法并正确解决这些问题。