私は Java の初心者であり、Java のジェネリックについてはさらに初心者です。同様の質問を探しましたが、特定の問題に対する簡単な答えは見つかりませんでした。
私は、患者、医師、相談、医療イベント、および診療所に関連するすべてのものを管理するプロジェクトを開発しています。私が今やろうとしているのは、各患者に関連する医療イベントのリストを作成することです. この医療イベントのリストには、今のところ、検査と処方箋の追加のみが許可されているはずですが、拡張可能である必要があります。将来、必要に応じて他の種類の医療イベントを追加できるようにしたいと考えています。手術に関する情報など。
そこで、Patient クラスにジェネリック ArrayList の ArrayList を作成することから始めました。その型は、MedicalEvent クラスによって拡張されるように制限されています (つまり、今のところ、これは Prescription または Exam のいずれかの型の ArrayList の ArrayList です)。また、Prescription タイプの ArrayList と、Exam タイプの別の ArrayList も作成しました。
List<ArrayList<? extends MedicalEvent>> medicalevents;
private ArrayList<Prescription> prescriptions;
private ArrayList<Exam> exams;
次に、コンストラクターで、ArrayLists 処方箋と検査を ArrayList medicalevents に追加しました。
medicalevents.add(prescriptions);
medicalevents.add(exams);
許可されている 2 つのタイプのいずれかの医療イベントを追加するために、次のメソッドを定義しました。
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) は、引数 (処方箋) には適用できません」というエラーが表示され、その意味がわかりません。誰かが私が間違っていることを教えてくれますか、またはこの問題に取り組むためのより良い方法を提案できますか?
ありがとう!