#java #collections #casting #arraylist #vaadin
#java #Коллекции #Кастинг #массив #vaadin
Вопрос:
В Vaadin я создаю массив таблиц.
ArrayList<TabSheet> Tabs = new ArrayList<TabSheet>();
Я выполняю некоторые операции над ними, например, добавляю дополнительные вкладки к каждой из таблиц в массиве.
После этого, когда я пытаюсь добавить его в MainWindow в качестве компонента, я получаю сообщение об ошибке. Вот как я пытаюсь это сделать:
BaseClassWindow.addComponent((Component) Tabs);
Я получаю этот ClassCastError:
java.util.ArrayList cannot be cast to com.vaadin.ui.Component
Как можно решить эту проблему? Есть ли обходной путь?
Комментарии:
1. Вам нужно поместить свои таблицы в контейнер, чтобы они были доступны для отображения. Как вы ожидаете, что они будут показаны?
2. В Vaadin, как только я добавляю их в качестве компонента в экземпляр Window, они отображаются. Проблема в том, что здесь происходит приведение из экземпляра ArrayList в компонент пользовательского интерфейса vaadin.
3. Да, это нормально, что вы получаете ошибку приведения, вы можете отображать только компоненты, а список массивов таковым не является. Если вы хотите отображать только одну таблицу за раз, вызовите
BaseClassWindow.addComponent(Tags.get(the_index_you_want))
.4. Вы правы, я понимаю, что я делал неправильно.
Ответ №1:
Массив не является компонентом, поэтому вы не можете его преобразовать. Содержимое списка, таблиц, однако, есть, поэтому вы можете их добавить.
Например:
for(TabSheet tabsheet : tabs){
myWindow.addComponent(tabsheet);
}