HashMap и конструкция случая

Поскольку удобочитаемость обосновывает, что я стараюсь не использовать основанные на символе конструкции случая, с помощью Java 6. Я не могу переключиться на 7 струй...

Map<String, String> map = new HashMap<String, String>() {
    {
        put("foo", "--foo");
                put("bar), "--bar");
        ... 
    }
    private static final long serialVersionUID = 1L; // java problem
};

serialVersionUID - насколько я знаю, возможно, часть проблемы. В настоящее время я работаю с если конструкции:

if (!map.containsValue(args[0])) {
    logger.error("Unknown parameter:  " + args[0]);
        ...

Я обрабатываю ~ 30 параметров. В любом случае растущее число.

Даже возможно определить switch конструкции с перечислениями или HashMaps В Java 6?

1
задан wishi 4 June 2010 в 11:58
поделиться

3 ответа

Если вы обрабатываете более 30 параметров одним и тем же способом, то вам нужен какой-то цикл. Например:

for (int i=0; i<args.length; i++)
{
   String param = args[i];
   if (!map.containsValue(param))
      logger.error("Unknown parameter:  " + param);
   .. handle argument
}

Похоже, что вы разбираете аргументы командной строки. Есть несколько хороших библиотек, которые предлагают гибкий разбор командной строки, например args4j. В args4j вы создаете модель данных и позволяете ей сопоставлять поля в данных с аргументами командной строки.

1
ответ дан 3 September 2019 в 00:03
поделиться

Я думаю на этот вопрос есть ответы, которые могут вам помочь

1
ответ дан 3 September 2019 в 00:03
поделиться

Использование Strings в операторе switch будет доступно в Java 7.

Для умеренного или сложного синтаксического анализа аргументов командной строки я настоятельно рекомендую использовать Commons-CLI, он предоставляет отличный API, чтобы сделать это намного проще для вас.пример его использования:

// create Options object
Options options = new Options();

// add t option
options.addOption("t", false, "display current time");
...

CommandLineParser parser = new PosixParser();
CommandLine cmd = parser.parse( options, args);

if(cmd.hasOption("t")) {
    // print the date and time
}
else {
    // print the date
}
0
ответ дан 3 September 2019 в 00:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: