【发布时间】:2014-04-07 18:17:22
【问题描述】:
我有一个Task 课程和一个Dev 课程。我正在向开发人员分配任务,并在 Dev 中包含的 ArrayList 中记录分配给每个开发人员的任务。这是我在Task 中的方法,它将特定任务分配给特定开发人员,其下方有 Task 构造函数:
public void setAssignedDev(Dev dev){
this.assignedDev=dev;
dev.addToTasksAssigned(this);
}
public Task(String newProject,String newDescription, float newEarliestStartTime,float newDuration,float newLatestFinishTime,boolean newIsTaskReferenced,ArrayList<Dev> newListDevs){
project=newProject;
description=newDescription;
earliestStartTime=newEarliestStartTime;
duration=newDuration;
latestFinishTime=newLatestFinishTime;
isTaskReferenced=newIsTaskReferenced;
newListDevs=new ArrayList<Dev>();
};
setAssignedDev()方法触发Dev中的ArrayList<Task>记录任务,然后对列表进行排序:
public Dev(String newName){
name=newName;
tasksAssigned=new ArrayList<Task>();
}
public void addToTasksAssigned(Task task){
this.tasksAssigned.add(task);
//sort list by allotted start time
Collections.sort(tasksAssigned, new Comparator<Task>(){
@Override
public int compare(Task t1, Task t2){
if(t2.getAllottedStartTime()>t1.getAllottedStartTime()){return +1;}
if(t2.getAllottedStartTime()<t1.getAllottedStartTime()){return -1;}
else {return 0;}
}
});
为了测试这一点,我初始化了一些类的实例,然后打印了tasksAssignedArrayList。主要方法如下:
Dev chris=new Dev("Chris");
Dev dave=new Dev("Dave");
Task task1=new Task("LCN","",3f,1f,5f,false, new ArrayList<Dev>(Arrays.asList(chris,dave)));
task1.setAllottedStartTime(3.5f);
Task task2=new Task("Project","",0f,3.5f,6f,false,new ArrayList<Dev>(Arrays.asList(chris)));
task2.setAllottedStartTime(0f);
task1.setAssignedDev(chris);
task2.setAssignedDev(chris);
System.out.println(chris.getTasksAssigned());
现在,当我运行此程序时,系统会打印出:[[Task-null], [Task-null]]
正在添加任务,但是当它们返回时它们为空?我期待看到[task1,task2],我是不是误会了什么?
谢谢
编辑以包含 Dev 构造函数
【问题讨论】:
-
你也可以显示
getTasksAssigned()方法的代码吗? -
只是返回数组列表:
public ArrayList<Task> getTasksAssigned(){ return tasksAssigned; }
标签: java class object arraylist