java.lang.Object; не может быть приведен к [Ljava.lang.Integer; в com.java.Test.Test.main (Test.java:16)

1
public class Test {

    public static void main(String[] args) {
        System.out.println(new CountingGenerator.String(12).next());
        List<Integer> list=new ArrayList<Integer>();
        list.add(new Integer(1));
        list.add(new Integer(2));

        Integer[] c = {1,3,3};
        //throw an exception:
        c = (Integer[]) list.toArray();
    }
}

Интересно, почему это произошло? Integer является подклассом Object, поэтому он должен быть Ok вместо этого! пожалуйста, ответьте мне глубоко! Я хочу знать почему? какой принцип?

  • 0
    List <Integer> list = new ArrayList <Integer> (), почему «list.toArray ()» является массивом объектов ????
  • 0
    Возможно, вы захотите взглянуть на эту ссылку stackoverflow.com/questions/1115230/…
Показать ещё 2 комментария
Теги:

1 ответ

3
Лучший ответ

Изменить строку

 c=(Integer[]) list.toArray();

в

c= list.toArray(c); // add c as parameter

В вашем list.toArray(); возвращает Object[] и JVM не знает, как слепо опускать Object[] в Integer[].

public Object[] toArray()      //return Object type array
public <T> T[] toArray(T[] a) //Returns an array containing all of the elements in this collection; the runtime type of the returned array is that of the specified array

Документы Java

  • 0
    Вы не можете обработать список Integer IS-A список объектов!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню