2012-07-09 122 views
0

我正在嘗試創建任務表並操作其內容。我正在處理一個我不明白的錯誤,並非常感謝您的幫助。我對這個問題的長度進行了標記,但試圖儘可能多地提供細節。添加新記錄時ArrayList記錄的錯誤更新

tasksRepository存儲記錄,這被構造在類的taskdef,如數組列表。該方法包含ArrayList類的add()和get()方法。

taskDef對象的參數是使用本地set方法創建的。以下是此類方法的一個示例:如果交付的參數與存儲的值不同,則它將存儲值,並且該事件將被添加到日誌記錄中。無論如何,一個成功的標誌被重新調整。

public static Boolean setProjectNumber(String projectNumberI) 
{ // All the 
    if (projectNumberI != projectNumber) 
    { 
     projectNumber = projectNumberI; 
     logAccumulator = logAccumulator + "; project number (" + projectNumberI + ")"; 
    } 
    return true; 
} 

private static void setLog() 
{ // When all the parameters are set, the log parameter is updated with time tag 
    String t = formatterFull.format(GregorianCalendar.getInstance().getTime()); 
    log = log + "\n" + t + ": " + logAccumulator;  
} 

tasksTableProcessing包含任務操作。以下內容包含構造函數。它是以更簡單的形式開始的,但在調查過程中我改變了它。類taskStatus是返回字符串的ENUM。該方法getLog()簡單地返回日誌字段

public tasksTableProcessing() 
{ // constructor. Creates the tableRepository object with test records 
    tasksRepository.clearDb(); 

    taskDef task = null; 
    task = new taskDef ("P1000", "O1", taskStatus.started(), "1", "false", "false"); 
    tasksRepository.addTask (task); 
    System.out.println("\nLog 0: \n" + tasksRepository.getTask(0).getLog()); 

    task = null; 
    task = new taskDef ("P1000", "O1", taskStatus.started(), "2", "false", "true"); 
    tasksRepository.addTask (task); 
    System.out.println("\nLog 1: \n" + tasksRepository.getTask(1).getLog()); 

    task = null; 
    task = new taskDef ("P2000", "O2", "closed", "63", "true", "false"); 
    tasksRepository.addTask (task); 
    System.out.println("\nLog 2: \n" + tasksRepository.getTask(2).getLog()); 

    task = null; 
    task = new taskDef ("P2000", "O2", "closed", "64", "true", "true"); 
    tasksRepository.addTask (task); 
    System.out.println("\nLog 3: \n" + tasksRepository.getTask(3).getLog()); 
} 

以下爲日誌。它表明,當引入新記錄時,所有舊記錄都會更新。

登錄0:

09/07/2012 10點21:;項目編號(P1000);任務(任務1);任務ID(1);所有者(O1);狀態

日誌1:項目編號(P1000);任務(任務1);任務ID(1);所有者(O1);狀態(已啓動)

09/07/2012 10:21:項目編號(P1000);任務(任務1);任務ID(1);所有者(O1);狀態(開始);任務(任務2);任務ID(2);送貨標誌(真)

日誌2:

2012年9月7日上午10:21:項目編號(P1000);任務(任務1);任務ID(1);所有者(O1);狀態(開始)

09/07/2012 10:21:項目編號(P1000);任務(任務1);任務ID(1);所有者(O1);狀態(開始);任務(任務2);任務ID(2);送貨標誌(真)

2012-09-07 10:21:項目編號(P1000);任務(任務1);任務ID(1);所有者(O1);狀態(開始);任務(任務2);任務ID(2);投遞標誌(true);項目編號(P2000);任務(任務63);任務ID(63);擁有者(O2);狀態(關閉);關鍵路徑(true);輸送標誌(假)

登錄3:

09/07/2012 10時21:;項目編號(P1000);任務(任務1);任務ID(1);所有者(O1);狀態(已啓動)

09/07/2012 10:21:項目編號(P1000);任務(任務1);任務ID(1);所有者(O1);狀態(開始);任務(任務2);任務ID(2);送貨標誌(真)

2012-09-07 10:21:項目編號(P1000);任務(任務1);任務ID(1);所有者(O1);狀態(開始);任務(任務2);任務ID(2);投遞標誌(true);項目編號(P2000);任務(任務63);任務ID(63);擁有者(O2);狀態(關閉);關鍵路徑(true);送貨標誌(false)

09/07/2012 10:21:項目編號(P1000);任務(任務1);任務ID(1);所有者(O1);狀態(開始);任務(任務2);任務ID(2);投遞標誌(true);項目編號(P2000);任務(任務63);任務ID(63);擁有者(O2);狀態(關閉);關鍵路徑(true);投遞標誌(false);任務(任務64);任務ID(64);交貨標誌(真)

+0

大背景,但我不確定我能看到問題出在哪裏。 – shem 2012-07-09 09:23:37

+0

您可以顯示taskDef的構造函數和tasksRepository.addTask(task)的定義的代碼嗎? – Sabbath 2012-07-09 09:30:02

回答

1

鑑於方法簽名,存儲您的任務定義爲靜態字段,而不是實例字段的成員。靜態字段是類TaskDef本身的字段,而不是特定TaskDef實例的字段。

閱讀關於instance and class members的Java教程。

+0

非常感謝喲:刪除靜態聲明(過去由於某些編譯問題而添加的聲明)可以完全解決問題 – user1511360 2012-07-09 10:46:33