Что я хочу сделать, это загрузить пары ключей/значений из файла (excel file using Apache poi) в статическую карту, которая будет использоваться в качестве таблицы поиска. После загрузки таблица не изменится.как передать параметр в статический блок инициализации
public final class LookupTable
{
private final static Map<String, String> map;
static {
map = new HashMap<String, String>();
// should do initialization here
// InputStream is = new FileInputStream(new File("pathToFile"));
// not sure how to pass pathToFile without hardcoding it?
}
private LookupTable() {
}
public static void loadTable(InputStream is) {
// read table from file
// load it into map
map.put("regex", "value");
}
public static String getValue(String key) {
return map.get(key);
}
}
В идеале я хочу, чтобы загрузить карту внутри блока статической инициализации, но как бы я передать поток в без жесткого кодирования это? Проблема, которую я вижу с помощью статического метода loadTable, может не вызываться перед вызовом других статических методов.
// LookupTable.loadTable(stream);
LookupTable.getValue("regex"); // null since map was never populated.
Есть ли лучший подход к этому вопросу?
Принял ответ dasblinkenlight, отвечая на исходный вопрос. Подумав об этом, я, вероятно, перепроектирую и отвечу toto2. – cvue