JAVA ОШИБКА: L java .lang.Object; нельзя привести к [L java .util.ArrayList; - PullRequest
0 голосов
/ 07 апреля 2020

Может кто-нибудь помочь объяснить, почему я получил эту ошибку времени выполнения для кода ниже? (решение не требуется) Спасибо!

import java.util.*;

class GFG {

    public static void main (String[] args) {
        ArrayList<Integer>[] arr = (ArrayList<Integer>[]) new Object[2];
    }
}

Ошибки времени выполнения: Исключение в потоке "main" java .lang.ClassCastException: [L java .lang.Object; нельзя привести к [L java .util.ArrayList; в GFG.main (Файл. java: 5)

1 Ответ

0 голосов
/ 07 апреля 2020

Прямо из спецификации API для [ClassCastException][1]:

Брошенный, чтобы указать, что код попытался преобразовать объект в подкласс, экземпляром которого он не является.

В вашем случае вы понижаете (кастинг Object до ArrayList). Каждый ArrayList - это Object, но не каждый Object - это ArrayList.

Как правило, уныние - плохая идея. Вам следует избегать этого. Если вы используете его, вам лучше включить чек, используя instanceof.

Object o = new ArrayList<>();
if (o instanceof ArrayList) {
    ArrayList<String> arr = (ArrayList<String>) o;
}
...