Bukkit Config - получить подразделы и безопасный кастинг

У меня есть следующий файл конфигурации:

arenas
  arena1
    info: infotest
    info2: info2test
  arena2
    info: infotest
    info2: info2test

Так. Теперь я хочу получить одну арену и преобразовать ее в объект арены, у меня есть конструктор, принимающий карту. Итак, я делаю следующее:

Arena a = new Arena((Map<String, Object>) getConfig().get("arenas.arena1"));

Это работает. Но: я получаю следующее предупреждение в eclipse:

Type safety: Unchecked cast from Object to Map<String,Object>

Я понимаю, почему это появляется. но как я могу изменить способ получения информации, чтобы избежать этого, чтобы сделать «безопасный» бросок?

И мой второй вопрос: теперь я хочу получить все подкарты с арен."" и инициализировать их при загрузке плагина. Как я могу получить их все? Я не могу найти что-то вроде arenas.getAll() или я не знаю... что-то вроде этого... есть идеи?

Спасибо.


person T_01    schedule 04.03.2014    source источник


Ответы (1)


Для вашего первого вопроса вы можете получить раздел конфигурации «arena1» и получить все значения в виде карты без каких-либо предупреждений. Для этого используйте:

config.getConfigurationSection("arenas.arena1").getValues(false);

В качестве альтернативы вы можете просто поставить @SupressWarnings("unchecked") над методом, в котором вы используете этот код. Поскольку вы знаете, что тип, который вы получите, будет Map, предупреждение на самом деле не имеет большого значения, хотя некоторые разработчики могут счесть это плохой практикой.

Для вашего второго вопроса вы можете использовать аналогичный метод. getValues() по сути является методом типа getAll(), он получает карту всех ключей и значений в разделе. Итак, вы можете использовать:

config.getConfigurationSection("arenas").getValues(false);
person kabb    schedule 04.03.2014