数组列表 添加"This"类



我有一个类,它包含与类相同对象的公共静态数组列表,因此类称为Image,类中的数组列表为ArrayList。我有一个方法来存储对象从类,将一个公共void方法存储对象在数组列表中供所有人使用,如果我做list.add(this)?我是一个新手,如果这听起来很愚蠢或任何XD或没有意义,我很抱歉。基本上我想在图像类中创建一个图像对象的存储系统,现在初始化的图像对象可以执行ImageExampleObject.addLib()函数,这个公共方法addLib()执行list.add(this),列表是图像对象的ArrayList。这能行吗?

我不知道如何搜索一个简短的句子来描述我想要发现的东西,这基本上就是为什么我在这个网站上找不到任何问题,如果你打算说,有人已经问过了,你为什么不去看看那个问题,你应该下次搜索。P:

问候:)

答案是"Yes it works"。

下面是一个实现:

import java.util.ArrayList;

public class Image {
    public static ArrayList<Image> list = new ArrayList<>();
    public void addLib() {
        list.add(this);
    }
    public static void main(String[] args) {
        new Image().addLib();
        new Image().addLib();
        new Image().addLib();
        for (Image image : list) {
            System.out.println("Image "+image+" is in store");
        }
    }
}
输出:

Image Image@3f8b995c is in store
Image Image@6601879b is in store
Image Image@6e6e056e is in store

我会在构造函数而不是方法中添加Item s到ArrayList。原因如下:

Image的构造函数可能是您应该调用arrayList.add(this);的地方。这使得Image在实例化时被添加到static ArrayList中。这意味着您不必调用单独的方法来添加它们。这可以更好地保证所有Image实例都可以通过该ArrayList访问。

public class Image{
    public static ArrayList<Image> arrayList = new ArrayList<>();
    public Image(){
        arrayList.add(this);
    }
    ...
}

如果你只希望select Image s被存储,那么你会想要spartidan的实现。

我认为最好使用静态方法来更新静态列表:

public class Image {
    public static ArrayList<Image> list = new ArrayList<>();
    public static void addLib(Image image) {
        Image.list.add(image);
    }
    public static void main(String[] args) {
        Image.addLib (new Image());
        Image.addLib (new Image());
    }
}

我发现使用静态方法来操作静态成员更清晰。

最新更新