我有Equipment
和Product
两个类,它们是Item
类的子类,我将导入的设备和产品存储在ArrayList<Item>
中,我需要从该列表中迭代访问Equipment
和Product
的唯一方法。
我知道使用instanceOf
通常是不好的做法,但这是我所尝试的简化版本。
for(Item i: listOfItems){
if(i.itemType instanceOf Equipment){
i.getEquipmentVin();
}
}
2条答案
按热度按时间2eafrhcq1#
如果你有一个Item列表(或一些Item),你只能调用Item方法。但是你可以将它转换为Equipment(或Product),然后调用相应的方法。要注意的是,将一个Item转换为Equipment,而在运行时它是一个Product(或其他东西),会给予你一个ClassCastException。
若要解决此问题,请首先确定您拥有的内容,然后再进行造型:
c7rzv4ha2#
您需要强制转换才能从
Equipment
类调用方法。或者,您可以对instanceof
使用模式匹配。但请注意,这可能是设计不当的症状。