java - 如何使用原始类型初始化类的对象
问题描述
我见过各种线程,其中大多数都在谈论默认值,例如原始值用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 类,但现在我想尝试使用原始类,这只是为了我的学习。
谢谢你。
解决方案
这里:
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 不是“包装器”。它是一个容器。放东西的盒子。当你说:我的地图要装鸡蛋盒时,那张地图需要鸡蛋盒,而不是单个鸡蛋!
推荐阅读
- ms-access - 压缩和修复其他数据库列表
- docker - 复制 docker-unware 服务 (Docmosis)
- python - pyarrow.hdfs.connect 无法访问我的 hadoop 集群
- bootstrap-4 - Boostrap 4 隐藏 div 不起作用?
- c - C - prevent interrupt activiation - MSP430
- c# - c#在结构化列表中搜索
- html - Mask border with transparent png?
- css - React 生成的文档(.md 文件)并将自定义样式传递给组件内的元素
- node.js - 如何在 nodejs 中使用 neo4j 和 Gremlin
- php - PHP 或 MySQL 替换启用 HTML 的内容条目中的标签