2014-01-17 38 views
0

因此,我有一個任務來唯一命名一個相當大的項目中的所有swing組件,命名約定爲name_of_containing_classnumber_of_its_instance/name_of_variable_holding_component。所以我創建了一個程序來自動搜索所有的代碼庫,每次初始化swing組件後,它都會命名它。我得到的實例號從這個靜態方法:爲每個對象實例分配唯一的編號

public static int getInstanceNumber(Object instance) { 
    if (instancesMap.get(instance.getClass()) != null) { 
     List<Object> instances = instancesMap.get(instance.getClass()); 
     if (!instances.contains(instance)) { 
      instances.add(instance); 
      return instancesMap.get(instance.getClass()).size(); 
     } else { 
      return instances.indexOf(instance) + 1; 
     } 
    } else { 
     ArrayList<Object> instances = new ArrayList<Object>(); 
     instances.add(instance); 
     instancesMap.put(instance.getClass(), instances); 
     return instancesMap.get(instance.getClass()).size(); 
    } 
} 

我用它像some_component.setName(類名+ getInstanceNumber(本)/變量名);

它完成了工作,我的問題是我需要這個命名在執行過程中保持一致。我需要注意什麼來確保線程不會妨礙我,或者我怎樣才能以不同的方式處理它,以便在不同的執行中不會遇到不同命名的問題(假設我們在應用程序中通過相同的路徑) 。

我需要擠自動化測試這些名字,所以每次我們執行相同的測試時間,我們需要一個完全一樣的Swing組件相同的名稱/

回答

1

你將不得不徹底返工這一點。在這種設置中,線程會拋棄你,但是如果有人改變了代碼,它會重新編號在這個方法調用之後調用這個方法的所有東西。

我會建議硬編碼的名稱,使用類的名稱,或期待在這個要求背後的目標,看看是否有其他選擇。

相關問題