【发布时间】:2021-01-03 09:46:30
【问题描述】:
当我尝试将 HashMap 传递给构造函数时,我一直在努力找出问题并修复错误。我的情况是:
我有一个学生班:
public class Student {
String name;
String major;
String level;
public Student (String name, String major, String level) {
this.name = name;
this.major = major;
this.level = level;
}
}
我有另一个类,称为 TA_Manager,它是 Student 的子类。这个 TA_Manager 类使用 HashMap 从 Student 类中收集学生(即 TA):
import java.util.HashMap;
public class TA_Manager extends Student {
HashMap<String, Student> TA;
public TA_Manager(HashMap<String, Student> TA) {
this.TA = TA;
}
}
在主类中,我创建了三个学生对象,并将其中两个学生放入 HashMap(他们是 TA)。然后我创建一个 TA_Manager 对象并将 HashMap 传递给 TA_Manager 类:
import java.util.HashMap;
public class Test {
public static void main(String[] args) {
Student s1 = new Student("A", "CS", "Junior");
Student s2 = new Student("B", "IS", "Senior");
Student s3 = new Student("C", "CE", "Senior");
HashMap<String, Student> TA = new HashMap<String, Student>();
TA.put("TA1", s1);
TA.put("TA2", s2);
TA_Manager tamgr = new TA_Manager (TA);
}
}
当我运行主类时,它返回错误:
TA_Manager.java:6:错误:Student 类中的构造函数 Student 不能应用于给定类型;
公共 TA_Manager(HashMap
我实际上已经搜索过这个 HashMap 问题,并且我遵循了关于如何将 HashMap 传递给构造函数的解决方案: Pass a HashMap as parameter in Java 以及如何将类作为哈希图值传递的链接: Can HashMap contain custom class for key/value?
但我仍然收到错误消息。我不知道如何解决这个错误。任何人都可以对此有所了解。真的很感激。
【问题讨论】:
-
你需要做两件事之一,在student中创建一个默认的构造函数,或者调用当前的构造函数。你希望 TA.name 是什么?
标签: hashmap