Тип безопасности сырой тип с потоком в java - PullRequest
1 голос
/ 08 января 2020

Я использую поток / массивы для преобразования JSONArray в String[]. Библиотека, используемая для json, имеет вид: jsonsimple

Один из следующих элементов:

import org.json.simple.parser.*;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

    // other stuff

        try (FileReader reader = new FileReader(
                "/home/hduser/eclipse-workspace/db-simulatiob/src/generator-config.json")) {

            // Get config json
            JSONObject obj = (JSONObject) jsonParser.parse(reader);
            JSONObject aTags = (JSONObject) obj.get("assembling-tags");
        String[] assemblingTags = (String[]) ((JSONArray) aTags.get("list")).stream().toArray(String[]::new); <---- one liner

Но возвращается предупреждение:

Тип безопасности: метод toArray (IntFunction) относится к необработанному типу Stream. Ссылки на тип * generic c должны быть параметризованы

Согласно этому аналогичному посту , я должен дать явный тип, ОК.

Не будучи Чтобы разобраться с одним вкладышем, я разделил один вкладыш на три и попытался скрыть предупреждение об этой новой версии. Пока у меня есть это:

    JSONArray temp = (JSONArray) aTags.get("list");
    Stream<JSONArray> ts = temp.stream();  <=== warning here
    String[] tss = (String[]) ts.toArray(String[]::new);

Но он все еще возвращает то же предупреждение во второй строке на temp.stream();.

Как я могу исправить код, чтобы подавить предупреждение

1 Ответ

1 голос
/ 08 января 2020

Если ваш код работает, и вы уверены, что это то, что вы хотите, вы пробовали?

@SuppressWarnings("unchecked")
String[] tss = (String[]) ts.toArray(String[]::new);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...