Java 具有已知数据类型的对象数组
我目前正在做一个项目,我有一个对象数组。我知道数组将存储以下类型:产品、食品、衣服(食品和衣服都是产品的子类)。问题是,我试图从数组(条形码)中访问对象的属性,但当我尝试这样做时,它会给我一个错误,并说“类型对象的条形码未定义” 我怎样才能解决这个问题 我不能为每种类型创建单独的数组,因为当我添加更多的类和类型时,它将不可伸缩 谢谢 对。未来的类也将是产品的子类 这是代码的一个实例。唯一的问题是getBarCode()的行(这是Product类的一个方法)Java 具有已知数据类型的对象数组,java,Java,我目前正在做一个项目,我有一个对象数组。我知道数组将存储以下类型:产品、食品、衣服(食品和衣服都是产品的子类)。问题是,我试图从数组(条形码)中访问对象的属性,但当我尝试这样做时,它会给我一个错误,并说“类型对象的条形码未定义” 我怎样才能解决这个问题 我不能为每种类型创建单独的数组,因为当我添加更多的类和类型时,它将不可伸缩 谢谢 对。未来的类也将是产品的子类 这是代码的一个实例。唯一的问题是getBarCode()的行(这是Product类的一个方法) 私有对象arr[]=super.get
私有对象arr[]=super.getArray();
公共无效排序(INTC)
{
对象aux;
int min=999,poz;
对于(int i=0;i
从阵列访问对象时,您可以做的是比较对象类型
像这样:
Object o = array[0];
if(o.getClass().equals(Product.class)) {
Product p = (Product)o;
p.getBarcode();
}
或者,如果要放入此数组的所有对象都是Product的子类,只需创建一个arrayList来使用Products,如new arrayList(),然后在此调用barcode方法。如果可以保证方法
barcode
存在于Product
及其子对象上,然后您可以使用产品的数组来代替
如果您想使用特定的子类方法,您必须处理任何类型的精细转换,但这至少可以让您在所有元素上调用相同的方法,而不必太担心
只要getArray
可以更改为returnProduct
,您就可以编写以下代码:
private Product[] arr = super.getArray();
您也可以将aux
更改为Product
的一种类型。我们可以查看代码吗将来的所有类也都是Product
的子类吗?在通过instanceof
检查哪个是后,您必须将对象
强制转换为Product
、Food
或衣服
,或者您创建一个抽象超类并在其中定义您的条码
,它表示它不能将Object转换为Product您不能将Object[]数组转换为Product[]数组,但您可以将Object成员转换为Product<代码>产品p=(产品)o
您的阵列访问方法不正确-应该是阵列[0]
或需要访问的任何位置get
可在列表中找到
@Makoto fixed,不记得问题是否有数组或数组列表
private Product[] arr = super.getArray();