2016-03-03 4 views
1

OS Windows 7 64-bitJava Array Object

Я использую стороннее программное обеспечение для написания скриптов с использованием jython. Я могу создать массив типа компонента «int», используя «newInstance». Я также могу извлекать элементы по определенным индексам, используя «get». Однако, когда я пытаюсь инициализировать значения массива с помощью «setInt», я получаю:

IllegalArgumentException: Аргумент не является массивом.

Почему он распознает массив при извлечении с помощью get, но не при запуске с помощью setInt?

from java.lang.reflect import Array 
    arrayAsset = ['ExtRS', 'TPI', 'RRN', 'RRS', 'CCLN', 'CCLS', 'TPA', 'BAGN', 'BAGS', 'CP'] 
    arrayCount = Array.newInstance(int, len(arrayAsset)) 
    Array.get(arrayCount, 3) 
    Array.setInt(arrayCount, 3, 0) 

ответ

-2

Я использовал ArrayList вместо Array, на самом деле не решение, но оно сработало.

2

Что может происходить в том, что был создан массив Integer.

в Java

Object arrayCount = Array.newInstance(Integer.class, arrayAsset.length); 
Array.setInt(arrayCount, 3, 0); 

бросает java.lang.IllegalArgumentException: Аргумент не является массивом

в то время как

Object arrayCount = Array.newInstance(Integer.class, arrayAsset.length); 
Array.set(arrayCount, 3, 0); 

будет работать

Object arrayCount = Array.newInstance(int.class, arrayAsset.length); 
Array.setInt(arrayCount, 3, 0); 

также работает нормально

+0

Я в конечном итоге импортировал ArrayList и использовал инструкции «set» и «add». Я должен был обновить свой пост, спасибо за ваш вклад, BevynQ – user2795886

+0

Интересный случай, когда autoboxing прошел не так, а? –