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

Java 如何使用基元类型初始化类的对象,java,java-8,Java,Java 8,我看到过各种线程,其中大多数都谈到默认值,比如原语是用0初始化的,包装器是用null初始化的。 我的问题是具体的,有实例,而不仅仅是概念 我的班级: public class Subject { int subCode; int marks; long CGPA; public Subject(int subCode, int marks, long CGPA) { this.subCode = subCode; this.mar

我看到过各种线程,其中大多数都谈到默认值,比如原语是用0初始化的,包装器是用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;
    }

}
下面是我在主课堂上的地图:

Map<Integer,List<Subject>> map1 = new HashMap<>();
        map1.put(Integer.valueOf(1),new Subject(001,70,29l));
Map map1=newhashmap();
map1.put(整数.valueOf(1),新受试者(001,70,29l));
我在
29l
中出错,我尝试了各种形式,如
Long.Valueof(29)
,但它们都不起作用

有谁能告诉我当类的字段中有基元类型时,如何使用构造函数生成类的实例的概念吗

注意:我完全知道我应该在这里使用包装器类,但现在我想尝试使用primitive,这只是为了学习

谢谢。

这里:

Map<Integer,List<Subject>> map1 = new HashMap<>();
不行

    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))));
map1.put(1,Collections.singletonList(新主题(001,70,29l));
map1.put(1,Arrays.asList)(新受试者(001,70,29l));
map1.put(1,新ArrayList(Arrays.asList)(新主题(001,70,29l));
应该都能用。(注意:我没有通过编译器运行上述内容,因此请忽略愚蠢的打字错误等。并且:前两个示例将为您提供行,而不是行,允许您从这些列表中添加/删除项目)


你的措辞暗示了你的一个误解:列表不是“包装器”。它是一个容器。放东西的盒子。当你说:我的地图上应该有鸡蛋盒,那么地图上要的是鸡蛋盒,而不是单个的鸡蛋

“我在29l中遇到错误”错误是什么?此外,你的地图上显示它包含一个主题列表,但你只提供了一个。你有
list
。。。但增加
新科目(001,70,29l)
…您的映射包含类型列表的值,但您正在尝试输入类型Subject的值。注意,除非您确实需要八进制数,否则不应将第一个参数写为
001
。Primitive
29L
是最正确的,因为该参数被声明为Primitive
long
(不是
long
对象)。在
29L
中始终使用大写字母
L
,因为小写字母L很容易被误读为数字1。
    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))));