我目前正在开发一个项目,我有一个对象数组。我知道阵列将存储以下类型:产品,食品,衣服(食品和衣服都是产品的子类)。问题是我试图从数组(barCode)访问对象的属性,但是当我尝试这样做时,它给了我一个错误,并说“对于类型Object,未定义”barCode“。
我该如何解决这个问题?
我无法为每种类型创建一个separates数组,因为当我添加更多的类和类型时,它不可扩展。
谢谢!
是肯定的。未来的课程也将是产品的子课程
这是代码的一个实例。唯一的问题是使用getBarCode()(这是Product类的方法)
private Object arr[] = super.getArray();
public void sort(int c)
{
Object aux;
int min = 999, poz;
for(int i = 0; i < super.getIndex() - 1; i ++)
{
for(int j = i; j < super.getIndex(); j ++)
{
if( arr[j].getBarCode() < min)
{
min = arr[j].getBarCode();
poz = j;
}
}
aux = arr[i];
arr[i] = arr[poz];
arr[poz] = aux;
}
}
答案 0 :(得分:1)
如果您可以保证barCode
及其子级上存在方法Product
,那么您可以使用Product
数组来代替。
如果你想使用特定的子类方法,你将不得不处理你想要做的任何类型的繁琐投射,但这至少可以让你在所有元素上调用相同的方法而不用太担心。
只要getArray
可以更改为返回Product
,就可以写下:
private Product[] arr = super.getArray();
您也将aux
更改为Product
类型。
答案 1 :(得分:0)
从数组访问对象时,您可以做的是比较对象类型。
像这样:
Object o = array[0];
if(o.getClass().equals(Product.class)) {
Product p = (Product)o;
p.getBarcode();
}
或者,如果您放入此数组的所有对象都是Product的子类,只需将arrayList设置为使用Products,例如new ArrayList(),然后调用条形码方法。