我是Java新手,甚至是Java中的泛型更新。我寻找过类似的问题,但对于我的特殊问题没有找到直接的答案。如何访问通用ArrayList的ArrayList中的对象
我正在开发一个项目来管理患者,医生,咨询,医疗事件和所有与医疗诊所相关的内容。 我现在要做的是创建与每位患者相关的医疗事件列表。到目前为止,这个医疗事件列表只能被允许添加检查和处方,但它应该是可扩展的:如果需要,我希望能够在未来添加其他类型的医疗事件,如关于手术的信息。因此,我开始在类Patient中创建一个通用ArrayLists的ArrayList,其类型有待由类MedicalEvent扩展(所以,现在,它是ArrayList类型的Prescription或Exam类型ArrayList)的ArrayList。我还创建了一个Prescription类型的ArrayList和另一个类型的Exam。
List<ArrayList<? extends MedicalEvent>> medicalevents;
private ArrayList<Prescription> prescriptions;
private ArrayList<Exam> exams;
然后,在构造函数中,我添加了处方的ArrayList和考试到ArrayList medicalevents。
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中添加(捕获#1-of?extends MedicalEvent)不适用于参数(处方)“,我不知道它是什么意思。任何人都可以告诉我我做错了什么,或者建议更好的方法来解决这个问题?
谢谢!
是'处方'是'MedicalEvent'的孩子吗? –
是的,这是正确的。 –
这是关于你的问题的主题,但我认为使用地图<?扩展MedicalEvent,List <?扩展MedicalEvent >>比拥有列表清单(比如你)要好得多,因为它需要你对索引进行硬编码。 – pabrantes