如何使用基本类型初始化类的对象

Jok*_*Lee -1 java java-8

我见过各种线程,其中大多数都在谈论默认值,例如Primitive用0初始化,而Wrappers用null初始化。我的问题是具体的,仅举例而不是概念。

我的课:

public class Subject {
    int subCode;
    int marks;
    long CGPA;

    public Subject(int subCode, int marks, long CGPA) {
        this.subCode = subCode;
        this.marks = marks;
        this.CGPA = CGPA;
    }

}
Run Code Online (Sandbox Code Playgroud)

现在在我的主班上去我的地图:

Map<Integer,List<Subject>> map1 = new HashMap<>();
        map1.put(Integer.valueOf(1),new Subject(001,70,29l));
Run Code Online (Sandbox Code Playgroud)

我在中遇到错误29l,我尝试过各种形式,例如Long.Valueof(29),但它们不起作用。

谁能告诉我一个概念,即在一个类的字段中何时存在原始类型,然后如何使用构造函数创建该类的实例。

注意:我完全知道我应该在这里使用Wrapper类,但是现在我想尝试使用Primer,这只是为了我的学习。

谢谢。

Gho*_*ica 5

这里:

Map<Integer,List<Subject>> map1 = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

您声明该映射的值为lists

然后,您尝试添加主题类的单个实例!

    map1.put(Integer.valueOf(1),new Subject(001,70,29l));
Run Code Online (Sandbox Code Playgroud)

不能上班!

    map1.put(1, Collections.singletonList(new Subject(001,70,29l)));
    map1.put(1, Arrays.asList(new Subject(001,70,29l)));
    map1.put(1, new ArrayList<>(Arrays.asList(new Subject(001,70,29l))));
Run Code Online (Sandbox Code Playgroud)

应该一切正常。(注:我没有通过编译运行上面的,所以忽略愚蠢的错别字和这样或:在前两个例子中会给你会行从这些清单允许您添加/删除邮件)

您的措辞暗示着您的一个误解:列表不是“包装器”。这是一个容器。一个用来放东西的盒子。当您说:我的地图将容纳鸡蛋盒时,该地图将需要鸡蛋盒,而不是单个鸡蛋!