public class Demo1 {
private HashMap<String, Student> studentMap;
private HashMap<String, Teacher> teacherMap;
Demo1(){
intiate();
}
public void intiate() {
studentMap = new HashMap<String, Student>();
teacherMap = new HashMap<String, Teacher>();
}
public HashMap<String, Student> getStudentMap() {
return studentMap;
}
public void setStudentMap(HashMap<String, Student> studentMap) {
this.studentMap = studentMap;
}
public HashMap<String, Teacher> getTeacherMap() {
return teacherMap;
}
public void setTeacherMap(HashMap<String, Teacher> teacherMap) {
this.teacherMap = teacherMap;
}
//Genric HashMap
public HashMap<String, Class<? extends Details>> getobject()
return ?;
}
}
我有2个学生和教师的哈希图,这些哈希图是extenfing Details类。 我有2个方法来返回此哈希图。 我想创建泛型方法来返回任何这个hashmap,如果我只提供类名(Student或Teacher)。 这样做的方法是什么?
答案 0 :(得分:1)
你做不到。
如果可行,您可以在Student
的散列图中添加Teacher
(通过从该方法获取),这会破坏类型安全。
您可以通过返回Map<String, ? extends YourBaseClass>
来获取此类地图的只读版本,这意味着它的确如此。
答案 1 :(得分:0)
你可以,
public <T extends Details> HashMap<String, T> getMap(Class<T> theClass);
答案 2 :(得分:0)
你可以创建一个学生和教师都可以实现的界面(也许你称之为Person)。然后你的方法返回类型可能是HashMap。当然,如果您想调用特定于学生或教师的方法,您将不得不使用强制转换。