簡體   English   中英

如何在Java的同一數組中存儲多級類對象?

[英]How do I store multipule class objects in the same array in Java?

如果我在類DefaultItems中創建一個數組:

DefaultItems[] items = new DefaultItems[20];

我想將其用作5個不同類對象的存儲陣列。 我想存儲一個Car對象,Person對象和Pet對象。

 DefaultItems[1] = Car Object;
 DefaultItems[2] = Person Object;

這可能嗎?

如果CarPerson是從DefaultItems派生的,那么您的代碼應該可以工作(假設輸入錯誤是固定的)。

如果這些類沒有任何關系,則可以使用Object[]而不是DefaultItems[] 所有類均源自Object

確保從基類DefaultItems擴展了所有5個對象,即CarPerson 一旦做到這一點,就可以實現您想要的。

 public class Person extends DefaultItems {
   //...
 }

 public class Car extends DefaultItems {
   //...
 }

然后

 DefaultItems[] items = new DefaultItems[2];
 DefaultItems[0] = new Person();
 DefaultItems[1] = new Car();

Number類及其子類的一個示例如下:

    Number[] nums = new Number[3];
    nums[0] = new Integer(0);
    nums[1] = new Double(1.0);
    nums[2] = new Float(0.5);

    for(Number num: nums){
        System.out.println(num);//<--prints the numbers
    }

以一種類型安全的方式,即使您要存儲在數組中的所有對象共享一個共同的父類(從它們繼承),這也是可能的:

class Car extends MyObject {
  ...
}

class Person extends MyObject {
  ...
}

MyObject[] array = new MyObject[2];
array[0] = new Car();
array[1] = new Person();

但是在將它們添加到數組之后,就可以像MyObject實例一樣訪問它們了(除非您強制轉換了它們,必須避免),因此,如果MyObject類不提供公共接口,那么這將毫無意義。 最好使用組合物:

class MyClass {
  Person person;
  Car car;
  ..
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM