Я пытаюсь создать ChoiceBox в JavaFX 8, для которого требуется коллекция. Я не могу понять, как создать коллекцию, хотя... Если я попробую:
ObservableList<String> list = new ObservableList<String>();
Я получаю сообщение об ошибке: я не могу создать экземпляр ObservableList, потому что он абстрактный. Понятный. Если я посмотрю на документ для ObservableList, я вижу, что SortedList реализует ObservableList, но я не могу этого сделать:
ObservableList<String> list = new SortedList<String>();
Потому что нет подходящих конструкторов. По-видимому, мне нужно, чтобы ObservableList проходил в SortedList, что нечетно, потому что я не могу создать ObservableList.
constructor SortedList.SortedList(ObservableList<? extends String>,Comparator<? super String>) is not applicable
(actual and formal argument lists differ in length)
constructor SortedList.SortedList(ObservableList<? extends String>) is not applicable
(actual and formal argument lists differ in length)
Я не уверен, как это расшифровать. Если я попробую
ObservableList<String> list = new SortedList<SortedList<String>>();
//or
ObservableList<String> list = new SortedList<ObservableList<String>>();
из отчаяния, я получаю еще более запутанную ошибку.
SortedList<String> list = new SortedList<String>();
тоже не работает. Как-то это работает (но, видимо, использует небезопасную операцию):
ChoiceBox box = new ChoiceBox(FXCollections.observableArrayList("Asparagus", "Beans", "Broccoli", "Cabbage" , "Carrot", "Celery", "Cucumber", "Leek", "Mushroom" , "Pepper", "Radish", "Shallot", "Spinach", "Swede" , "Turnip"));
Итак, я попробовал:
ObservableList<string> list = new FXCollections.observableArrayList("Asparagus", "Beans", "Broccoli", "Cabbage" , "Carrot", "Celery", "Cucumber", "Leek", "Mushroom" , "Pepper", "Radish", "Shallot", "Spinach", "Swede" , "Turnip");
Но не повезло и там. Я очень смущен, повторяя одни и те же тики снова и снова в бесконечной петле, пытаясь понять это. Документация, которую я нашел, показывает примеры, которые не помогают, или нет примеров. Официальная документация также бесполезна:
"Предположим, например, что у вас есть коллекция c, которая может быть списком, набором или другим видом коллекции. Эта идиома создает новый ArrayList (реализация интерфейса List), изначально содержащий все элементы в c.
List<String> list = new ArrayList<String>(c);
" Поэтому для создания ArrayList, реализации List, мне нужно иметь List. причина, по которой я пошел в документацию, заключалась в том, чтобы узнать, как сделать то, что они предполагают. Я потерялся. Помощь?