所以我主要创建了主要类Library
:
HashMap<String, HashSet<String>> students_books = new HashMap<String, HashSet<String>>();
然后我会上课Student
,我将建立一个将HashMap作为参数的构造函数:
public class Student {
private Student(HashMap students_books){
然后在我的主类中再创建一个student
对象,我想把HashMap作为参数:
Student student = new Student(*HashMap as parameter*);
我找不到的是我如何做到这一点以及Student
类如何知道我传递的HashMap的类型,例如<String, HashSet<String>>
答案 0 :(得分:2)
回答你的问题 - “如何将HashMap作为参数传递”以及Student类如何知道类型 我提供了一种更通用和标准的方法来实现这个目标
Map<K,V> books = new HashMap<K,V>(); // K and V are Key and Value types
Student student = new Student(books); // pass the map to the constructor
..
//Student Constructor
public Student(Map<K,V> books){
..
}
答案 1 :(得分:1)
知道我传递的HashMap的类型
首先,你的方法不是构造函数,因为它有返回类型,删除它的返回类型并公开你的构造函数。然后通过执行此操作强制它们传递您想要的任何类型的HashMap
public class Student {
public Student(HashMap<String, HashSet<String>> students_books){
然后像这样传递它们
HashMap<String, HashSet<String>> students_books = new HashMap<String, HashSet<String>>();
Student student = new Student(students_books);
答案 2 :(得分:1)
在您的Student类构造函数(当前是一个方法,因为它具有返回类型)中,该参数不使用泛型类型。
请将其更改为以下内容。
public StudentHashMap(HashMap<String, HashSet<String>> students_books){
}
这将确保在编译期间类型安全
答案 3 :(得分:1)
您所做的是私有方法,而不是构造函数。 将您的方法更改为:
public Student(HashMap<String, HashSet<String>> student_books) {
//your code here
}
我这样会成为你想要的真正的构造函数,希望这会有所帮助