1

在我的程序的一部分中,我有一个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 时才使用它。

4

2 回答 2

5

你有两个选择。

如果您使用的是 Java 7,并且您已经创建JListListModel使用了正确的泛型签名。假设像...

JList<WeatherAPI> locList;

还有一个类似的列表模型声明,您可以使用

WeatherAPI chosen =  locList.getSelectedValue();

否则,您将需要转换结果

WeatherAPI chosen =  (WeatherAPI)locList.getSelectedValue();

有点老派,我通常会在演员之前检查结果

Object result =  locList.getSelectedValue();
if (result instanceof WeatherAPI) {
    WeatherAPI chosen =  (WeatherAPI)result
}
于 2013-03-30T20:39:58.110 回答
2

尝试使用getSelectedValue()

WeatherAPI chosen =  locList.getSelectedValue();
于 2013-03-30T20:33:25.543 回答