Как передать массив или список значений в Java через системные свойства и как получить к нему доступ?

1

Есть ли способ передать список значений в Java, используя только одно системное свойство?

Я думаю о чем-то по строкам -DMY_LIST=val1,val2,val3 или -DMY_LIST={val1, val2}

Есть идеи?

Как получить доступ к этому в Java?

Обновление: сначала я попросил переменные среды, но на самом деле имел в виду системные свойства. Подобный принцип, но совсем другой... Я изменил название и текст соответственно сейчас. Спасибо, @serge-ballesta

  • 1
    Множество идей, что вы пробовали и с чем у вас проблемы? Я бы взял переменную окружения, которая является строкой, и split(",") ее.
  • 0
    Я думаю, что моя настоящая причина для этого вопроса была больше похожа на "как правильно это сделать?" и "какой синтаксис я должен использовать, т.е. фигурные скобки или нет?" - пока ничего не пробовал, если честно, так как я хотел услышать, что будут делать другие и как это будет сделано "надлежащим образом". Я знаю, что использовал бы фигурные скобки для передачи списков в аннотации, но не был уверен, как это будет выглядеть для аргумента командной строки, например -D ...
Показать ещё 2 комментария
Теги:
arrays
list
environment-variables

1 ответ

4
Лучший ответ

Из учебника Oracle Javase На платформе Java приложение использует System.getenv для извлечения значений переменных среды. Без аргумента getenv возвращает экземпляр java.util.Map, доступный только для чтения, где ключи карты являются именами переменных среды, а значениями карты являются значения переменных среды.

Поэтому, если у вас есть переменная среды MY_LIST=val1,val2,val3, вы можете использовать ее так же просто, как

String strlist = System.getenv().get("MY_LIST");
List<String> list = Arrays.asList(strlist.split(","));

Изменение: фиксированный вызов getenv (забытые скобки - благодаря христианину)

Я должен уточнить, что мой anwer относится к переменной окружения, которая является названием сообщения. Но java -D MY_LIST=a,b,c... устанавливает свойства системы, и это не то же самое. Чтобы получить доступ к свойствам системы, заданным -D, я должен написать вместо этого:

String strlist = System.getProperty("MY_LIST");
List<String> list = Arrays.asList(strlist.split(","));
  • 0
    Так что без фигурных скобок правильный синтаксис? :)
  • 1
    @Christian Спасибо за помощь в улучшении моего ответа. Я попробовал это в Java 7, и если я поставлю фигурные скобки ... я получаю их в strlist и просто должен пропустить их.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню