Проблема в том, что метод toArray()
возвращает объект типа Object[]
, который совершенно другого типа отличается от Integer[]
(поэтому приведение не выполняется).Вы должны передать массив с другим типом в toArray(…)
, чтобы решить это.Наиболее эффективный метод получения массива из списка:
List<Integer> tmp = options.getList_years();
combobox_current_year = new JComboBox<Integer>(
tmp.toArray(new Integer[tmp.size()]));
Я использую временную переменную для хранения списка, потому что я хочу предварительно изменить размер массива, чтобы значения можно было просто скопировать.внутрь.Передача в более короткий массив (например, длины 0) также будет работать, но вызовет дополнительное выделение.(Вы можете заставить его работать, сохраняя массив нулевой длины в поле private static
; он эффективно неизменен, поэтому вы можете делиться им без каких-либо вредных последствий. Но я предпочитаю предварительный размер, так как это оставляет меньше беспорядка на уровне класса.)