如何创建java抽象类的子类对象列表

时间:2014-03-02 12:48:27

标签: java list abstract-class

我有一个抽象类carowners。和两个子类personcompany。 抽象类carowners包含字段:

  • 名称
  • 地址
  • next(引用下一个对象(personcompany))。

我需要一个carowners列表,其中列表中的对象将是Person对象或Company - 对象(以及CarOwner类型的间接对象)。 我知道如何创建类型为Linkedlist的{​​{1}}或ArrayList,但这不是我的要求。我需要一个存储人和公司对象的abstractclassi.e carowners列表,每个对象引用另一个在抽象类中使用next。

1 个答案:

答案 0 :(得分:0)

听起来您想要存储创建的CarOwner的所有实例,无论它们是Person个对象还是Company个对象。这个可以这样实现:

abstract class CarOwner
{
    private static final List<CarOwner> allCarOwners = new ArrayList<CarOwner>();
    public static List<CarOwner> getAllCarOwners()
    {
        return Collections.unmodifiableList(allCarOwners); 
    }

    CarOwner()
    { 
        CarOwner.allCarOwners.add(this);
    }
}

class Person extends CarOwner { }
class Company extends CarOwner { }

// To be used with
Person peson0 = new Person();
Person peson1 = new Person();
...
Company company0 = new Company();
Company company1 = new Company();

List<CarOwner> all = CarOwner.getAllCarOwners();

// Prints person0, person0 ..., company0, company1....
System.ut.println(all);

然而,如果这是所要求的,它有点值得怀疑,因为它类似于内置内存泄漏。