在我的程序的一部分中,我有JList
它有一个关于位置的列表,我有一个API,它应该使用JList
中的项目并打印出天气那个位置。所以现在我不能这样做,因为我使用
WeatherAPI chosen = locList.getSelectedIndex();
但是有一个错误:类型不匹配:无法从int转换为WeatherAPI。
这是有效的API示例:
LinkedList<WeatherAPI> stations = FetchForecast.findStationsNearTo("cityname");
for (WeatherAPI station : stations) {
System.out.println(station);
}
WeatherAPI firstMatch = stations.getFirst();
所以我不想得到第一个选项,我希望得到用户选择的位置。这都是关于铸造的。 我也试过这个不起作用:
WeatherAPI stations;
WeatherAPI firstMatch = stations.get(locList.getSelectedIndex());
我得到了剩下的代码,它使用了“firstMatch,但只有在它的类型是WeatherAPI时才使用它。”
答案 0 :(得分:5)
你有两个选择。
如果您使用的是Java 7,并且已使用正确的泛型签名创建了JList
和ListModel
。假设有类似......
JList<WeatherAPI> locList;
和类似的列表模型声明一样,你可以使用
WeatherAPI chosen = locList.getSelectedValue();
否则你需要施放结果
WeatherAPI chosen = (WeatherAPI)locList.getSelectedValue();
有点老派,我通常会在演员表之前查看结果
Object result = locList.getSelectedValue();
if (result instanceof WeatherAPI) {
WeatherAPI chosen = (WeatherAPI)result
}
答案 1 :(得分:2)
尝试使用getSelectedValue():
WeatherAPI chosen = locList.getSelectedValue();