Java 使用map的通用存储库

Java 使用map的通用存储库,java,Java,我有一个家庭作业,指定在现有项目中添加一个通用存储库层。我面临的问题如下。我的存储库应该封装一个存储数据的地图。到目前为止,我所掌握的情况如下: public interface IDObject<T> { public Comparable<T> getID(); } public class Person implements IDObject<String> { private String cnp; private Strin

我有一个家庭作业,指定在现有项目中添加一个通用存储库层。我面临的问题如下。我的存储库应该封装一个存储数据的地图。到目前为止,我所掌握的情况如下:

public interface IDObject<T> {
    public Comparable<T> getID();
}

public class Person implements IDObject<String> {
    private String cnp;
    private String name;
    private String age;

    public Person(String cnp, String name, String age) {
    this.cnp = cnp;
    this.name = name;
    this.age = age;
    }

    public void setName(String name) { this.name = name; }
    public void setCNP(String cnp) { this.cnp = cnp; }
    public void setAge(String age) { this.age = age; }
    public String getName() { return name; }
    public String getCNP() { return cnp; }
    public String getAge() {return age; }
    public String toString() { return cnp + "-" + name + "-" + age; }
    @Override
    public Comparable<String> getID() { return getCNP(); } //basically the unique identifier
}

public class Repository<T extends IDObject<?????????>>{
    private IMap map;
    public Repository() {
        map = new Map<???????, T>();
    }
    ...
}
公共接口IDObject{
公共可比getID();
}
公共类Person实现IDObject{
私人字符串cnp;
私有字符串名称;
私弦时代;
公众人物(字符串cnp、字符串名称、字符串年龄){
this.cnp=cnp;
this.name=名称;
这个。年龄=年龄;
}
public void setName(字符串名){this.name=name;}
public void setCNP(字符串cnp){this.cnp=cnp;}
public void setAge(字符串年龄){this.age=age;}
公共字符串getName(){return name;}
公共字符串getCNP(){return cnp;}
公共字符串getAge(){return age;}
公共字符串toString(){return cnp+“-”+name+“-”+age;}
@凌驾
public compariable getID(){return getCNP();}//基本上是唯一标识符
}

公共类存储库您必须引入另一种泛型类型:

public class Repository<T, O extends IDObject<T>>
公共类存储库
之后,您可以将StringIDRepository作为

public class StringIDRepository<O extends IDObject<String>> extends Repository<String, O>
公共类StringIDRepository扩展存储库
另一种方法是使用
Map
,但这需要在存储库类中包含以对象为参数的getById方法


希望这会有帮助

“通用存储库层”的真正含义是什么?你认为这个用法如何?所有存放的对象是否共享唯一标识符类?如果是,应该很简单。如果没有,我认为这个任务没有意义。@Deltharis好的,存储库应该有如下方法:
store(tobj)
getAll()
等等。例如,
store(T obj)
方法实际上会生成
map.add(K键,T obj)
,并且还会将新存储的对象保存到外部文件中。此外,创建存储库时,文件中存储的所有对象都将加载到地图中。这就是我想象的一部分用法。是的,我所有存放的对象都共享唯一标识符类。