Задачу подсмотрел и сдал. Но решал немного по другому. Почему выдаёт ошибку ? Подскажите пожалуйста где ошибаюсь ?
public Item getProxy(Class<? > itemClass, Class<?> ... interClass) {
List<Class<?>> classList = new ArrayList<>();
classList.add(itemClass);
for (int i = 1; i < interClass.length; i++) {
classList.add(interClass[i-1]);
}
Class<?>[] interfaces = (Class<?>[]) classList.toArray();
return (Item)Proxy.newProxyInstance(this.getClass().getClassLoader(), interfaces, new ItemInvocationHandler());
}
ошибка IDEA говорит тут -- Class<?>[] interfaces = (Class<?>[]) classList.toArray();
VitalyK #1116124
1 уровень
Подскажите пожалуйста.
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Aleks
27 мая 2021, 10:02решение
Метод toArray() возвращает массив объектов Object, который невозможно привести к типу Class<?>[]
Нужно либо сразу работать с массивом, либо создавать массив Class<?>[] самому и копировать в него элементы списка. Что-то типа такого:
Class<?>[] interfaces = new Class<?>[classList.size()];
for (int i=0;ij<classList.size();ij++)
interfaces[j] = classList.get(i);
И еще у вас написано:
for (int i = 1; i < interClass.length; i++) {
classList.add(interClass[i-1]);
}
Правильнее будет так:
for (int i = 0; i < interClass.length; i++) {
classList.add(interClass[i]);
}
+2
VitalyK #1116124
1 июня 2021, 16:32
Спасибо
0