关于java:在创建类的新实例时,不会销毁我的ArrayList数据

My ArrayList data is not destroyed when creating new instance of a class

本问题已经有最佳答案,请猛点这里访问。

我运行三个AsyncTask(),每个AsyncTask创建另一个类的对象。

这就是我如何从doInBackground()创建类的实例,

1
        DOM domObject = new DOM;

现在,我的DOM类中有一个类级ArrayList

1
2
public class DOM {
    public static ArrayList<HashMap<String, Object>> tempNewsArray = new ArrayList<>();

我的主类运行三个AysncTask对象,因此应该为每个AsyncTask创建三个单独的DOM类实例。

每次执行AsyncTask时,都会向ArrayList中添加一些数据。

例子,第一次执行AsynTask,在ArrayList中添加了一些数据。第二次执行AsyncTask,在ArrayList中添加的一些数据(以前的数据不应该在ArrayList中存在)

但问题是,DOM类的前一个实例的数据仍然存在于ArrayList中,当另一个AysnTask实例创建DOM类的新实例时,数据不会被删除。

为什么会这样?

例子,第一个AsyncTask创建的DOM类的第一个实例,在arraylist中添加了一些数据。

DOM类的第二个实例是由第二个AsyncTask实例创建的,在ArrayList中添加了一些新数据,但以前实例中的数据仍然存在。

为什么呢?


Instances share a single copy of that member,which is initiated once,when the Domclass is initiated.

如果你希望每个Dom成员都有自己的阵列,则修改其声明如下:

1
public ArrayList<HashMap<String, Object>> tempNewsArray = new ArrayList<>();