2014-09-28 26 views
1

我有一個Java常量文件,其中包含大約1000條記錄,並且都是僅字符串類型 例如,如何創建將包含所有Java類的常量的HashMap或Arraylist

public static String PF_EMPLOYER = "PF-Employer"; 
public static String ESI_EMPLOYER = "ESI-Employer"; 
public static String TOTAL_CTC = "Total CTC"; 
public static String INCENTIVE = "Incentive"; 
public static String PF_EMPLOYEE = "PF-Employee"; 
public static String ESI_EMPLOYEE = "ESI-Employee"; 
==and so on could be more than 1000======= 

我只是想要靜態ArrayList或HashMap中的所有這些字符串值,其中HashMap中的整數將是0,1,2,3 .... 1000。

我堅持要找出任何有效的方法來完成這項任務,即使Spring提供了任何解決方案,我也準備好了解它。

對我來說不可能移動任何屬性文件中的常量文件內容。

請注意,我用的JDK 7不可能去爲JDK 8

+0

爲什麼你可能想這樣做?特別是用整數索引?如果你真的有一個很好的理由,你可以使用反射來識別一個類的靜態字段並把它放在一個地圖中。不過,我懷疑你會得到聲明訂單。 – beerbajay 2014-09-28 16:28:00

+0

其實所有這些常量值都在excel表格的第一行中作爲標題我想通過解析excel表格來驗證標題,第一行和所有值都希望與這些常量值相匹配,並且excel值必須以相同的順序排列。 – 2014-09-28 16:30:26

+0

如果這些常量已完成,那麼在excel中生成您的java代碼,即將這些代碼添加到散列映射中。 – 2014-09-28 16:31:43

回答

1

如果我正確理解您的要求,做你想做的,應使用反射的唯一自然方式。如果類名是ConstClass它可能是這樣的:

HashMap<String, String> map = new HashMap<>(); 
for (Field field: ConstClass.class.getFields()) { 
    if (String.class.isAssignableFrom(field.getType())) { 
     int modifiers = field.getModifiers(); 
     if (Modifier.isStatic(modifiers)) { 
      map.put(field.getName(), (String) field.get(ConstClass.class)); 
     } 
    } 
} 

您在map所有含static String領域得到。

相關問題