有没有一种方法可以将对象立即存储到另一个类列表?

时间:2020-09-17 16:36:23

标签: java class oop inheritance

标题,我在想这样的事情

Shapes s = new Shapes();
Circle c = new Circle("Our", "Parameters");
Rectangle r = new Rectangle("Our", "Parameters");

Shapes.addToList(c); // I don't want to do this for every object I create
Shapes.addToList(r); 

所以我想在初始化对象时将这些对象添加到“形状”列表中。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果Circle和Square都继承自Shapes,则在Shapes构造函数中,可以自动将其添加到列表中。在析构函数中,您要删除它。importjava.util。*;

public class Shapes {
    public static List<Shapes> allMyShapes = new ArrayList<Shapes>();

    public Shapes() {
        addToShapes(this);
    }

    static public void addToShapes(Shapes myShape) {
        allMyShapes.add(myShape);
    }

    static public void dump() {
        System.out.printf("Number of shapes stored: %d\n", allMyShapes.size());
    }
}

public class Foo {
    public static void main(String[] args) {
        Shapes myFirstShape = new Shapes();

        Circle myCircle = new Circle();
        Square mySquare = new Square();

        Shapes.dump();
    }
}

我没有实现析构函数。当然,仅当您始终希望这种行为时,这种方法才有用。