正如标题所说,我试图向 ArrayList 添加一个类对象实例,但显然它没有添加任何内容。
我正在尝试使用以下语法将对象添加到 ArrayList:
public void adicionarMedicaoAux(Medicao m){this.medicoes.add(m); }
这是“toString()”:
@Override
public String toString() {
return "Ficha de Utente\n------------------\n" +
"Utente: " + utente + " | " +
"Familiar(res) do utente: " + familiarUtente + " | " +
"Medições: " + medicoes + " | " +
"Prescrições: " + prescricoes + " | " +
"Exames: " + exames + " | " +
"Consultas: " + consultas;
}
这里就用这个方法:
public void AdicionarMedicao(String num_utente, LocalDate data, double peso, double altura, int tensao_arterial, int saturacao_oxigenio, int imc) throws RemoteException, UtenteNaoExiste {
c1+=1;
Medicao m = new Medicao(data, peso, altura, tensao_arterial, saturacao_oxigenio, imc);
medicoes.put(String.valueOf(c1),m);
FichaUtente fichautente = new FichaUtente(getUtenteEspecifico(num_utente));
fichautente.adicionarMedicaoAux(m);
}
最终在客户端被调用:
System.out.println("Introduza o ID de utente seguido das medições efetuadas (ID utente, peso,altura,tensão arterial, saturação de oxigénio): ");
String medicaonova = scanner.nextLine();
String[] medicaopartes = medicaonova.split(",", -1);
LocalDate data = LocalDate.now();
Double peso = Double.parseDouble(medicaopartes[1]);
Double altura = Double.parseDouble(medicaopartes[2]);
Integer tens_art = Integer.parseInt(medicaopartes[3]);
Integer sat_ox = Integer.parseInt(medicaopartes[4]);
Double imc_d = peso / (altura*altura);
Integer imc = imc_d.intValue();
mi.AdicionarMedicao(medicaopartes[0],data,peso,altura,tens_art,sat_ox,imc);
这是最终输出:
001 - Ficha de Utente
------------------
Utente: Utente: Nome: Luís | Nif: 241637341 | CC: 14422517 | Data de nascimento: 2002-06-18 | Número do utente: 001 | Telefone: 910410666 | Telefone familiar: 914504925 | E-mail: [email protected] | Morada: Rua do Nascente n38 Gualtar Braga | Familiar(res) do utente: [] | Medições: [] | Prescrições: [] | Exames: [] | Consultas: []
如您所见,“Medições”部分显示了一个空白的 ArrayList,而不是添加的内容。
这里有什么问题?
FichaUtente fichautente = new FichaUtente(getUtenteEspecifico(num_utente));
fichautente.adicionarMedicaoAux(m);
此代码:
fichautente
只有局部变量引用新创建的对象,当方法结束时局部变量就会进入垃圾箱。