1

問題を起こしている行をマークしました

private void EditButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           

DefaultListModel PatientListModel = new DefaultListModel();

for (Patient s : PatientList) {
    int AccNum = Integer.parseInt(IDTextField.getText());

    if (AccNum == s.getAccountNumber()) {

        s.setName(NameTextField.getText());
        s.setAge(Integer.parseInt(AgeTextField.getText()));
        s.setAddress(AddressTextField.getText());
        String PatientSex = "";

        if (MaleRadioButton.isSelected()) {
            PatientSex = "Male";
        }

        if (FemaleRadioButton.isSelected()) {
            PatientSex = "Female";
        }

        s.setSex(PatientSex);
        s.setPhone(PhoneTextField.getText());
        ArrayList<PatientCondition> PatientConditions3 = new ArrayList();
  ===>      PatientConditions3 = (ArrayList<PatientCondition>) ConditionsJList.getSelectedValuesList(); //error here
        s.setConditionsList(PatientConditions3);
        PatientInfoLabel2.setText("Patient Details Updated");

        for (Patient f : PatientList) {
            PatientListModel.addElement(f.getAccountNumber() + "-" + f.getName());
        }

        PatientJList.setModel(PatientListModel);
        UpdateAllViews();

        //       
    }
}
}                                 

エラーは次のとおりです。

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.util.Collections$EmptyList cannot be cast to java.util.ArrayList
4

6 に答える 6

5

エラーメッセージはかなり有益だと思います。そのキャストはできません。

PatientConditions3タイプを再定義する必要がありますList<PatientCondition>Listのような特定の実装ではなく、インターフェースに対してコーディングすることをお勧めしますArrayList。また、Java の命名規則に従うように名前を変更する必要があります。

List<PatientCondition> patientConditions3;

List受信した をたとえばに変換する必要がある場合は、受信ArrayListした の要素を使用して新しいものを作成できますList

patientConditions3 = new ArrayList<PatientCondition>(ConditionsJList.getSelectedValuesList());
于 2013-04-12T10:55:02.590 に答える
0

ArrayList の場合、これはキャストを行います。それ以外の場合、ArrayList は空です。

ArrayList<PatientCondition> patientConditions3 = (ConditionsJList.getSelectedValuesList() instanceof ArrayList<PatientCondition> ? ((ArrayList<PatientCondition>) ConditionsJList.getSelectedValuesList()) : new ArrayList<PatientCondition>());
于 2016-06-08T08:21:41.930 に答える
0

そこConditionsJList.getSelectedValuesList();に到達すると、いくつかの値のコレクション (または List<> の方が適切に聞こえる場合) が得られます。そして、それらをキャストする必要があるだけですPatientCondition..だから、次のようなものが必要です: PatientConditions3 = (PatientCondition) ConditionsJList.getSelectedValuesList();

もちろん、PatientConditions3 はList<PatientCondition>...

于 2013-04-12T10:56:30.240 に答える