首页 文章

Arraylist添加“此”类[关闭]

提问于
浏览
-4

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

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

问候 :)

3 回答

  • 0

    答案是“是的,它有效” .

    这是一个实现:

    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
    
  • 0

    我会在构造函数中将 Item 添加到 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);
        }
    
        ...
    }
    

    如果您只想选择 Image 存储,那么您将需要slartidan的实现 .

  • 0

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

    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());
        }
    
    }
    

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

相关问题