2010-06-04 2 views
1

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

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?

+2

Извините, но для меня совершенно неясно, чего вы пытаетесь достичь ... Не могли бы вы пояснить? –

+0

случай не работает со строками в Java. Я пытаюсь использовать случай с HashMap. – wishi

ответ

1

Если вы обработки более 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

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

0

Using Strings in a switch statement будет доступен in Java 7.

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

// 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 
} 
Смежные вопросы