我是 Java 新手,甚至对 Java 中的泛型也很陌生。我一直在寻找类似的问题,但没有找到针对我的特定问题的直接答案。
我正在开发一个项目来管理患者、医生、咨询、医疗事件以及与医疗诊所相关的所有内容。我现在要做的是创建一个与每个患者相关的医疗事件列表。对于这个医疗事件列表,目前,它应该只允许添加检查和处方,但它应该是可扩展的:如果我需要,我希望将来能够添加其他类型的医疗事件,比如关于手术的信息。
因此,我首先在 Patient 类中创建一个通用 ArrayLists 的 ArrayList,其类型由 MedicalEvent 类扩展(因此,目前,它是一个 Prescription 或 Exam 类型的 ArrayLists 的 ArrayList)。我还创建了一个 Prescription 类型的 ArrayList 和另一个 Exam 类型。
List<ArrayList<? extends MedicalEvent>> medicalevents;
private ArrayList<Prescription> prescriptions;
private ArrayList<Exam> exams;
然后,在构造函数中,我将 ArrayLists 处方和检查添加到 ArrayList 医疗事件中。
medicalevents.add(prescriptions);
medicalevents.add(exams);
为了添加两种允许类型之一的医疗事件,我定义了以下方法:
public void addMedicalEvent(E element){
if(element instanceof Prescription){
medicalevents.get(0).add((Prescription)element);
}
if(element instanceof Exam){
medicalevents.get(1).add((Exam)element);
}
}
问题是,我收到错误“ArrayList 类型中的方法 add(capture#1-of ? extends MedicalEvent) 不适用于参数(处方)”,我不知道这是什么意思。谁能告诉我我做错了什么,或者提出更好的方法来解决这个问题?
谢谢!