错误:使用import java.util.List在类中列出对象;

时间:2014-05-13 02:43:41

标签: java json list

我正在尝试编写一个将天气API json导入java的项目,但是我遇到了冲突错误。在下面你可以看到我需要为它生成java对象的json的一部分,它需要是一个列表对象类。首先,我真的很困惑如何将一个对象类编写为一个列表(我搜索了这个问题,但没有答案或教程对我来说足够精确),其次是该类的名称应该是"列表"匹配json(据我所知)与import java.util.List;

产生冲突
"list": [

{
    "dt": 1399950000,
    "main": {
        "temp": 287.82,
        "temp_min": 287.82,
        "temp_max": 287.82,
        "pressure": 923.74,
        "sea_level": 1018.93,
        "grnd_level": 923.74,
        "humidity": 100,
        "temp_kf": 0
    },
    "weather": [
        {
            "id": 501,
            "main": "Rain",
            "description": "moderate rain",
            "icon": "10d"
        }
    ],
    "clouds": {
        "all": 92
    },
    "wind": {
        "speed": 0.51,
        "deg": 226.005
    },
    "rain": {
        "3h": 6
    },
    "sys": {
        "pod": "d"
    },
    "dt_txt": "2014-05-13 03:00:00"
},
{
    "dt": 1399960800,
    "main": {
        "temp": 291.36,
        "temp_min": 291.358,
        "temp_max": 291.36,
        "pressure": 921.65,
        "sea_level": 1016.09,
        "grnd_level": 921.65,
        "humidity": 87,
        "temp_kf": 0
    },
    "weather": [
        {
            "id": 500,
            "main": "Rain",
            "description": "light rain",
            "icon": "10d"
        }
    ],
    "clouds": {
        "all": 20
    },
    "wind": {
        "speed": 0.87,
        "deg": 12.0018
    },
    "rain": {
        "3h": 0.5
    },
    "sys": {
        "pod": "d"
    },

正如你在json中看到的,我有一个列表对象,我需要将它映射到java对象。带有list对象的java类如下:

package weather.data;

import java.util.ArrayList;
import java.util.List;

public class List{

    List list = new ArrayList();
    private Main main;
    private Clouds clouds;
    private Number dt;
    private Weather weather;
    private Wind wind;
    private Rain rain;
    private Sys sys;
    private String dt_txt;

    public Main getMain(){
        return this.main;
    }
    public void setMain(Main main){
        this.main = main;
    }

    ...
       //The rest of setters and getters
}

我在import java.util.List前面遇到此错误:import java.util.List与同一文件中定义的类型冲突 并且List list = new ArrayList(); 此行有多个标记      - ArrayList是原始类型。应该是对泛型类型ArrayList的引用      参数      - 类型不匹配:无法从ArrayList转换为List      - 无法将ArrayList解析为类型

我还尝试将对象的名称更改为list1,但是当我尝试运行代码时,我遇到了另一个错误:线程中的异常" main" com.fasterxml.jackson.databind.JsonMappingException:无法在[来源:https://gist.githubusercontent.com/anonymous/4b32c7ef1ceb5dd48bf5/raw/ef1987551faa3fb61473bb0e7aad70a228dc36d6/gistfile1.txt的START_ARRAY标记中反序列化weather.data.list1的实例。 line:15,column:14](通过参考链:weather.data.Jweather [" list"])at ...

任何帮助都将受到高度赞赏。

4 个答案:

答案 0 :(得分:2)

您的名为List的班级正在遮蔽java.util.List,因此您的字段属于此类的类型;这就是编译器告诉你的。避免将类命名为与核心API类相同的简单名称,并在集合上使用通用参数。

答案 1 :(得分:0)

您似乎正在尝试实施自己的链接列表类。最好只使用JDK中的LinkedList类,如果这是您想要的功能,并且有一个Readings类(或Weather,或者任何名称对于你存储所有的数字,温度等等,但不是" next"列表的节点。

答案 2 :(得分:0)

请更改您的班级名称并运行它将正常工作,因为您的班级名称和列表名称相同,您将收到该错误。

答案 3 :(得分:-1)

您的课程名称为List,而jre在您导入的java.util.List中有自己的班级列表。

更改类的名称,它不能是任何java的API名称