Относительно запроса Java Map со значениями в виде массива строк. - PullRequest
0 голосов
/ 31 января 2012

У меня есть карта строк и массив строк:

private static Map cacheTimeStamp = new HashMap<String, String[]>();

Теперь, как мне получить значение этой карты, я хочу вернуть массив String [] обратно в вызывающую функцию, попытался использовать cacheTimeStamp.get("stringKey"), но он возвращает объект, и я хочу получить массив строк.

Ответы [ 3 ]

3 голосов
/ 31 января 2012

Определите вашу карту следующим образом:

private static Map<String, String[]> cacheTimeStamp = new HashMap<String, String[]>();

Проблема в том, что вы определяете открытую карту без указания ключа и типов объектов-значений. Который по сути является ключом типа java.lang.Object и значением типа java.lang.Object.

0 голосов
/ 31 января 2012

Вы на самом деле получаете String[].

Я вижу два варианта:

  1. Привести возвращаемое значение к строке []:

    String [] myEntry = (String []) cacheTimeStamp.get ("stringKey");

  2. (Мои предпочтения) Добавить аргументы типа на карту:

    private staticКарта cacheTimeStamp = new HashMap ();// ... String [] myEntry = cacheTimeStamp.get ("stringKey");

0 голосов
/ 31 января 2012

Вы не определили дженерики.

Map<String, String[]> cacheTimeStamp = new HashMap<String, String[]>();

На самом деле действительно вернул массив строк, но строго вы не знаете, когда не включаете дженерикив определении.Вот почему IDE говорит вам, что это будет объект.Убедитесь, что вы остерегаетесь того факта, что массив является объектом.

...