2014-04-07 94 views
0

我有一個Task類和一個Dev類。我正在爲開發人員分配任務,並記錄Dev中包含的ArrayList中的每個開發人員分配了哪些任務。這是我在Task方法來分配特定任務的具體開發,與它下面的任務建構:包含我構建的對象的ArrayList將其打印爲null

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()方法觸發DevArrayList<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],我誤解了什麼? 感謝

編輯包括開發構造以及

+1

你也可以顯示'getTasksAssigned()'方法的代碼嗎? –

+0

它只是返回數組列表: 'public ArrayList getTasksAssigned(){ return tasksAssigned; }' – user3441584

回答

0

我不知道這是否是唯一的問題,但也有一些是嚴重錯誤Task構造:

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

你傳遞在一個ArrayList<Dev>中添加一個名爲newListDevs的參數,然後在參數剛剛超出範圍之前分配一個新的空ArrayList<Dev>。您不會對傳遞給您的列表中的數據(如果有)做任何處理,並且在ctor完成後新列表將有資格進行垃圾回收。

相關問題