Как привести java Объект к объекту []? - PullRequest
2 голосов
/ 25 января 2020

Как привести java Объект к java Ошибка объекта [] или целого [] (Я не могу быть приведена к [L java .lang.Object;);

public class LongestAscendingSumSequence {

    public static void main(String[] ar) {
        int[] arr = { 1, 2, 3, 20, 3, 25, 30, 31, 32, 33, 34 };
        System.out.println(getSum(arr));
        float[] brr = { 1.3f, 2.3f };
        System.out.println(getSum(brr));
        int[] crr = { 1, 2, 3, 20, 3, 25, 30, 31, 32, 33, 34, -2 };
        System.out.println(getSum(crr));

    }

    public static String getSum(Object obj) {
        Object[] objects = (Object[]) obj;

        System.out.println(objects.length);

        return null;
    }
}

Получение ошибка для этого

Exception in thread "main" java.lang.ClassCastException: [I cannot be cast to [Ljava.lang.Object;
    at jan25.LongestAscendingSumSequence.getSum(LongestAscendingSumSequence.java:16)
    at jan25.LongestAscendingSumSequence.main(LongestAscendingSumSequence.java:7)

Ответы [ 3 ]

3 голосов
/ 25 января 2020

Вы пытаетесь привести типы примитивов к Object, что недопустимо.

Вам необходимы Обертки классов для этого подхода. Например:

Integer[] arr = { 1, 2, 3, 20, 3, 25, 30, 31, 32, 33, 34 };
System.out.println(getSum(arr));

Идеальная демонстрация

0 голосов
/ 25 января 2020

Как уже указывали другие, вы должны использовать здесь Wrapper Types, например, Integer вместо примитива int. Исключение classCastException здесь происходит, потому что он пытается привести примитив int к типу Object, и ни с помощью расширения, ни сужения нельзя достичь от int до Object, так как int не наследует тип Object.

0 голосов
/ 25 января 2020

Примечание. Это не поддерживает вычисление сумм за пределами диапазона double. Вам нужно заглянуть в BigDecimal, если вам это нужно.

public static <T extends Number>double getSum(T[] tArray) {
    double sum = 0;
    for (T t : tArray) sum = sum + t.doubleValue();
    return sum;
}

Вам нужно использовать Integer[] вместо int[].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...