【问题标题】:Remove an object from ArrayList in another class [duplicate]从另一个类的ArrayList中删除一个对象[重复]
【发布时间】:2021-08-14 09:17:33
【问题描述】:

我有一个Projectclass,其中包含Issue对象的非静态ArrayList

public class Project{

    private ArrayList<Issue> issue_Array = new ArrayList<>(); 

    //method to remove Issue
    public void removeIssue(Issue issue_obj) {
        this.issue_Array.remove(issue_obj);
    }

}

这是Issue

public class Issue {

    public void deleteThisIssue() {
          Project.removeIssue(this);     //this is where I don't know
    }

}

我正在寻找一种方法让问题对象从另一个类的 ArrayList 中删除自己。我的方法是从Project 类中调用removeIssue() 方法并传递this。但后来我意识到我不能将ArrayList&lt;Issue&gt; 声明为静态,因为不同的Project 存储不同的ArrayList&lt;Issue&gt;,我如何才能从存储在另一个类中的 ArrayList 中删除问题本身?

【问题讨论】:

  • removeIssue 是一个实例方法,它必须通过 Project 的一个实例来调用,而你却把它当作一个静态方法来调用
  • 是的,我最初将 ArrayList 和 removeIssue 声明为 static ,但现在我需要 ArrayList 和 removeIssue 为非静态。
  • 你的 removeIssue 方法不应该在 Issue 类中,它应该在 Project 类中,让我们开始吧。将它放在 Issue 类中是没有意义的。

标签: java arraylist


【解决方案1】:
public class Issue {
    private Project project;
    public void deleteThisIssue() {
          this.project.removeIssue(this);     //do like this
    }
    public void setProject(Project project){
      this.project = project;
    }
}

在您向项目添加问题的地方,通过在问题对象上调用 setProject() 为该项目注入问题。

【讨论】:

  • 所以您首先将问题添加到项目中,然后您可以将项目添加到问题中......非常糟糕的设计
猜你喜欢
  • 2014-05-04
  • 2016-02-14
  • 1970-01-01
  • 1970-01-01
  • 2013-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多