创建新对象后ArrayList为空
我想创建一个使用for循环在我的MainActivity.java中的虚拟对象的ArrayList。这似乎是我得到我创建的每个对象的对象引用做工精细:创建新对象后ArrayList为空
for(int i=0; i < 10; i++){
new TaskObjects("Title " + i, "Category " + i, "Description " + i, i + 10);
Log.d("For Loop", "" + i);
}
我有一个日志(this.toString())返回10次这样的构造函数中:
d/ARRAY:[email protected](每个不同ID)
TaskObjects类:
public class TaskObjects {
private String title;
private String category;
private String description;
private int taskPosterID;
private ArrayList<TaskObjects> tasksArray = new ArrayList<>();
public TaskObjects(String title, String category, String description, int taskPosterID){
this.title = title;
this.category = category;
this.description = description;
this.taskPosterID = taskPosterID;
tasksArray.add(this);
Log.d("ARRAY",this.toString());
}
//getters and setters
}
然而,当我尝试返回所述阵列的尺寸,则返回0
public class TaskObjects {
private String title;
private String category;
private String description;
private int taskPosterID;
public TaskObjects(String title, String category, String description, int taskPosterID){
this.title = title;
this.category = category;
this.description = description;
this.taskPosterID = taskPosterID;
}
//getters and setters
}
MainActivity.java
private ArrayList<TaskObjects> tasksArray = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
for(int i=0; i < 10; i++){
TaskObjects task= new TaskObjects("Title " + i, "Category " + i, "Description " + i, i + 10);
tasksArray.add(task);
Log.d("For Loop", "" + i);
}
}
您必须使tasksArray
为静态。否则的TaskObjects
每个实例创建一个新的(=空)taskArray
private static ArrayList<TaskObjects> tasksArray = new ArrayList<>();
是的,但它不是一个好主意。更好地将实例存储在外部列表中。 –
取决于你想要做什么。看例如组合设计模式 – osanger
我仍然会为此使用非静态列表。在组合模式中,每个子节点都是特定于其父节点的。所以实例需要每个列表。也就是说,可能会出现需要静态列表的情况。不过在OP的问题中。 –
'我尝试返回数组的大小,它返回0.'在哪里? – Ravi
也许你打算让'tasksArray'静态? – Zircon
基本上任何地方我实例化类和运行object.getTasks()。size() –