Java通用hashmap返回已创建的Hashmap的类型

时间:2017-07-31 16:13:11

标签: java

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)。 这样做的方法是什么?

3 个答案:

答案 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。当然,如果您想调用特定于学生或教师的方法,您将不得不使用强制转换。