Относительно запроса карты Java со значениями в виде массива строк.

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

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

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


person Rachel    schedule 31.01.2012    source источник


Ответы (3)


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

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

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

person anubhava    schedule 31.01.2012

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

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

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

person Martijn Courteaux    schedule 31.01.2012

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

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

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

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

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

    частная статическая карта cacheTimeStamp = new HashMap(); // ... String[] myEntry = cacheTimeStamp.get("stringKey");

person mrab    schedule 31.01.2012