首页 > 解决方案 > 如何使用原始类型初始化类的对象

问题描述

我见过各种线程,其中大多数都在谈论默认值,例如原始值用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));

我收到错误29l,我尝试了各种形式Long.Valueof(29),但它们不起作用。

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

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

谢谢你。

标签: javajava-8

解决方案


这里:

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

您声明地图的值为lists

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

    map1.put(Integer.valueOf(1),new Subject(001,70,29l));

不能工作!

    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))));

应该都可以。(注意:我没有通过编译器运行上述内容,因此请忽略愚蠢的拼写错误等。并且:前两个示例将为您提供不允许您从这些列表中添加/删除项目的行)

而且您的措辞暗示了您的误解: List 不是“包装器”。它是一个容器。放东西的盒子。当你说:我的地图要装鸡蛋盒时,那张地图需要鸡蛋盒,而不是单个鸡蛋!


推荐阅读