Почему я получаю сообщение об ошибке при простом приведении строки к целому в списке <String> - PullRequest
0 голосов
/ 28 мая 2019

Я хочу разыграть List<String> в массив Integer[]. Я сделал эту функцию:

public static Integer[] castToArrayInteger(List<String> cadenas) {
    Integer[] enteros = new Integer[cadenas.size()];
    for(int iteracion = 0; iteracion < cadenas.size(); iteracion++) {
        enteros[iteracion] = Integer.valueOf(cadenas.get(iteracion));
    }
    return enteros;
}

Затем я сделал тест:

@Test
public void castToArrayInteger() {
    List<String> cadenas = new ArrayList<>();
    Integer[] enteros = new Integer[3];
    int i = 0;
    while(i < 3) {
        cadenas.add(String.valueOf(i));
        enteros[i] = i;
        i++;
    }
    Assert.assertArrayEquals(enteros, ArregloUtils.castToArrayInteger(cadenas)) ;
}

Это работает как шарм. Но когда я использую функцию в веб-приложении, она не работает.

Инструментом отладки отметьте строку:

Integer.valueOf(cadenas.get(iteracion));

Ошибка

Integer is not compatible with the declared Type String.

Это строка, где я реализовал функцию getRubros:

List<CatalogoDto> rubros =  this.catalogoService.buscar(
                ArregloUtils.castToArrayInteger(this.getProductor().getRubrosId()));

Метод getRubrosId() получения данных в List<String>

Я хотел бы знать, почему у меня эта проблема.

Окружающая среда:
Java 1.8
Wildfly 16
Red Hat CodeReadyStudio.

Я ожидал для этого ввода:

List<String> data = new ArrayList<String>();
data.add("1");
data.add("2");
data.add("3");

Integer output = [1,2,3];

1 Ответ

0 голосов
/ 28 мая 2019

Для ясности, часть, в которую вы конвертируете действительные String в int записи, используя Integer.valueOf (как, например, в вашем тесте), не является реальной проблемой. Вы пытаетесь преобразовать String записей, которые не могут преобразовать в строки, как указано в сообщении об ошибке:

Целое число несовместимо с объявленной типовой строкой.

Вы можете подтвердить, что проблема не в самом процессе преобразования, а что вы пытаетесь преобразовать, выполнив следующий код:

    List<String> sData = new java.util.ArrayList<String>();
    sData.add("1"); sData.add("2"); sData.add("3");

    Integer[] iData = new Integer[sData.size()];
    for (int i = 0; i < sData.size(); i++) {
        iData[i] = Integer.valueOf(sData.get(i));
        System.out.println(iData[i]);
    }

Я бы рекомендовал проверять записи, которые вы конвертируете во время выполнения, с использованием некоторой техники отладки, такой как точки останова или простая регистрация. Это должно решить вашу проблему.

...