因此,我有一個任務來唯一命名一個相當大的項目中的所有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組件相同的名稱/